文档章节

app用户登录状态保持的一个简单方法

mifans
 mifans
发布于 2017/02/16 17:24
字数 280
阅读 396
收藏 0

最近在做查药专家的一款app,用户登录状态保持采用了session的方法.

使用session的话

1.客户端访问需要开启cookie策略.

或者

2.采用以下的方法

类似于token.用户登录后把登录时的sessionId获取到下发给用户.用户信息保持在这个session中.

每次访问携带sessionId.找到对应的session 判断用户是否登录状态.

下面是根据sessionId得到session的方法:

Servlet2.1之后不支持SessionContext里面getSession(String id)方法。

但是,我们可以通过HttpSessionListener监听器和全局静态map自己实现一个SessionContext。

public class MySessionContext {
    private static HashMap mymap = new HashMap();

    public static synchronized void AddSession(HttpSession session) {
        if (session != null) {
            mymap.put(session.getId(), session);
        }
    }

    public static synchronized void DelSession(HttpSession session) {
        if (session != null) {
            mymap.remove(session.getId());
        }
    }

    public static synchronized HttpSession getSession(String session_id) {
        if (session_id == null)
        return null;
        return (HttpSession) mymap.get(session_id);
    }
}
public class MySessionListener implements HttpSessionListener {
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
    MySessionContext.AddSession(httpSessionEvent.getSession());
    }

    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        HttpSession session = httpSessionEvent.getSession();
        MySessionContext.DelSession(session);
    }

}

web.xml添加一个监听器:

<listener>
<listener-class>listener.MySessionListener</listener-class>
</listener>

根据sessionId获取Session对象:

String sessionId = request.getParameter("sessionId");

HttpSession session = MySessionContext.getSession(sessionId);

 

© 著作权归作者所有

共有 人打赏支持
mifans
粉丝 10
博文 203
码字总数 102329
作品 0
海淀
程序员
shiro实现APP、web统一登录认证和权限管理

先说下背景,项目包含一个管理系统(web)和门户网站(web),还有一个手机APP(包括Android和IOS),三个系统共用一个后端,在后端使用shiro进行登录认证和权限控制。好的,那么问题来了web...

HelloRookie
2016/10/10
960
1
Android端“被挤下线”功能的实现

单点登录(被挤下线) 所谓的功能,即一个账号在A客户端保持登陆状态,然后又在B客户端进行了登陆操作,那么A客户端就会被挤下线。 服务端需要返回Token,每次在app登录时为app分配一个新的t...

sun_____xin
2017/11/09
0
0
app与php后台接口登录认证、验证(seesion和token)

简要:随着电商的不断发展,APP也层次不穷,随着科技的发展主要登录形式(微信、QQ、账号/密码);为此向大家分享一下"app与php后台接口登录认证、验证"想法和做法;希望能够帮助困惑的伙伴们...

子恒haley
2016/12/28
0
0
Node.js开发入门—使用cookie保持登录

这次来做一个网站登录的小例子,后面会用到。这个示例会用到Cookie、HTML表单、POST数据体(body)解析。 第一个版本,我们的用户数据就写死在js文件里。第二个版本会引入MongoDB来保存用户数据...

foruok
2015/08/17
0
0
iOS8 Extension 之今日插件(Today widget)插件

Today widget是在通知中心下面Today标签页的内容,任何APP都可以创建自己的Today widget,而且可以创建多个。用户可以在Today页面进行管理,选择那些widget是可见的,那些是不可见的。Today...

南瓜宝宝
2015/11/23
294
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之声明合并(一)

转发 TypeScript基础入门之声明合并(一) 声明合并 介绍 TypeScript中的一些独特概念描述了类型级别的JavaScript对象的形状。 TypeScript特别独特的一个例子是"声明合并"的概念。 在使用现有J...

durban
32分钟前
1
0
Mysql-db

aptitude install default-libmysqlclient-dev pip install mysql-python

dragon_tech
36分钟前
1
0
函数装饰器

def debug(func): def wrapper(*args, **kwargs): # 多个参数# def wrapper(something): # 指定一样的参数 print("[DEBUG]: enter {}()".format(func.__name__)) ......

colin_86
39分钟前
1
0
Notification-状态栏上的通知

当程序并不是出在运行状态的时候,可以调用Notification来显示通知。 1、创建 Notification的创建主要涉及到三个类:NotificationManager,Notification和PendingIntent NotificationManager主...

西米小娅
41分钟前
1
0
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource c

spring boot启动报错: Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determin......

wenzhizhon
43分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部