【问题标题】: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 等。