在登录机制中很多时候都涉及到Cookie、Session、token以及单点登录。下面我就简单的说明下他们的应用以及他们之间的关系。
1.Cookie 通常是保存在浏览器中的,在java 后端 通常生成方式如下:
Cookie cookie = new Cookie(“username”,”helloweenvsfei”);
cookie.setHttpOnly(false);
cookie.setPath(“/”);
cookie.setDomain(“localhost”);
response.addCookie(cookie);
2.Session 通常是页面登录后,java后台产生一个会话,生成方式如下
HttpSession session=request.getSession();
3. Cookie 与 Session之间的关系,可以先看如下的一种图
其中Cookie中JSESSIONID 就是 session 在后端产生后的 唯一值,用于http下次请求来找到后端相应的session
4. token 一般是由几个参数按照一定的算法产生的一个唯一的字符串。前端加密产生token,后端获取包括token等参数进行比对。
5.单点登录
单点登录基本上有如下两种形式
(1)一种采用独立的登录系统,各个应用获取到由登录系统产生的token后,可以在各自的系统登录
(2)一种利用cookie 来保存相关的登录信息,在各自的子系统进行登录
对于单点登录笔者认为,只要各个系统协商一致怎样都可以,主要还是涉及到安全的问题。笔者也临时想了一个单点登录的方式:
A 系统 登录后,利用token 机制,加密传输token ,B系统收到token后,比对正确,获取相应的用户权限信息,临时产生一个用户,用来完成B系统中的业务。token失效后,B系统的临时用户也同时失效。