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

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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 等。

【讨论】:

以上是关于区分移动应用程序和桌面浏览器对会话管理的请求的主要内容,如果未能解决你的问题,请参考以下文章

Servlet会话管理

为桌面、移动本机应用程序和 oAuth 功能设计 nodejs expressjs mongodb Webserver 流

将 ionic 用作桌面 Web 应用程序

计算机及移动设备管理软件,终端管理软件

微服务下分布式架构会话管理

jsp/servlet学习三之会话管理初解