【问题标题】:differentiate between mobile app and desktop browser request for session management区分移动应用程序和桌面浏览器对会话管理的请求
【发布时间】:2014-11-08 20:21:04
【问题描述】:

上下文:(Java) Web 应用程序使用 apache shiro 进行会话管理、身份验证、授权。 现在仅对于移动用户,会话属性需要在创建期间更改(例如:增加会话超时间隔等)。

如何区分移动客户端和桌面浏览器客户端? 浏览器用户代理可能会给出值,但它可靠吗?

当移动设备使用 Web 应用程序时,还需要注意哪些其他事项(在后端会话处理方面)?

【问题讨论】:

    标签: jquery session architecture shiro mobile-application


    【解决方案1】:

    我们发现使用 spring 移动设备模块最简单:http://docs.spring.io/spring-mobile/docs/current/reference/html/device.html

    您可以在 web.xml 中添加一个 servlet 过滤器,它将在请求中保留当前设备信息:

    <filter>
        <filter-name>deviceResolverRequestFilter</filter-name>
        <filter-class>org.springframework.mobile.device.DeviceResolverRequestFilter</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>deviceResolverRequestFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    然后您可以使用 util 获取信息

        Device currentDevice = DeviceUtils.getCurrentDevice((HttpServletRequest) request);
        if (currentDevice != null && (currentDevice.isMobile() || currentDevice.isTablet())){
            //do mobile stuff
        } else {
            //do desktop stuff
        }
    

    检测移动设备的所有用户代理内容都由该库处理。

    至于您的第二个问题,如果网页是从移动设备或桌面加载的,那么在服务方面并没有真正的区别。它们都有 HttpSession、cookie 等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 2011-12-28
      • 2020-05-05
      • 2016-08-23
      相关资源
      最近更新 更多