区分移动应用程序和桌面浏览器会话管理请求

时间:2014-09-15 10:21:45

标签: jquery session architecture shiro mobile-application

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

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

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

1 个答案:

答案 0 :(得分:1)

我们发现使用弹簧移动设备模块最简单: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
    }

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

至于你的第二个问题,如果网页是从移动设备或桌面加载的,那么服务方面就没有什么区别。他们都有HttpSessions,cookies等。