1.登录功能

思路分析:

怎么样才算登录成功了:

用户名和密码都输入正确,登录成功;否则,登录失败

登录功能的本质:

查询;根据用户名和密码查询员工信息

接口文档:

员工登录三层架构:

代码示例:

@Override

public LoginInfo login(Emp emp) {

Emp empLogin = empMapper.getUsernameAndPassword(emp);

if(empLogin != null){

LoginInfo loginInfo = new LoginInfo(empLogin.getId(), empLogin.getUsername(), empLogin.getName(), null);

return loginInfo;

}

return null;

}

2.登录校验

思路:

客户端请求经过统一拦截器校验登录标记,只有已登录用户才能访问受保护的业务接口(如员工、部门、报表模块),未登录请求会被拦截。

完成上述任务,需要两步:

登录标记:用户登录成功之后,在后续的每一次请求中,都可以获取到该标记。

统一拦截:过滤器统一拦截:过滤器FilterFilter、拦截器、拦截器InterceptorInterceptor

3.会话技术

指用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应

注:会话是和浏览器关联的,当有三个浏览器客户端和服务器建立了连接时,就会有三个会话

会话跟踪:

一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据

服务器会接收很多的请求,但是服务器是需要识别出这些请求是不是同一个浏览器发出来的,如果是同一个,就说明是同一个会话;如果是不同的,说明是不同的会话

而这个识别过程就是会话跟踪

实现方案:(三种)

Cookie(客户端会话跟踪技术):数据存储在客户端浏览器当中

Session(服务端会话跟踪技术):数据存储在储在服务端

令牌技术

Cookie

它存储在客户端浏览器我们可以在浏览器第一次发起请求来请求服务器的时候,我们在服务器端来设置一个cookie

比如第一次请求了登录接口,登录接口执行完成之后,我们就可以设置一个cookie,在 cookie 当中我们就可以来存储用户相关的一些数据信息

服务器端在给客户端在响应数据的时候,会自动的将 cookie 响应给浏览器,浏览器接收到响应回来的 cookie 之后,会自动的将 cookie 存储在浏览器本地。在后续的请求当中,浏览器会自动的将cookie携带到服务器

接下来在服务端我们就可以获取到cookie的值,判断是否存在,如果不存在说明没有登录接口;如果存在说明完成登录

Cookie会话跟踪方案的原理:

响应头:Set-Cookie

请求头:Cookie

Cookie会话跟踪方案的优缺点:

优点:HTTP协议中支持的技术

缺点:移动端APP无法使用Cookie;不安全,用户可以自己禁用Cookie;Cookie不能跨域

跨域介绍:

如果服务器设置了一个Cookie,这个Cookie是不能使用的,因为Cookie无法跨域

三个维度有任何一个维度不同,那就是跨域操作

Session

它是存储在服务器端,而它的底层就是基于Cookie

获取Session

浏览器在第一次请求服务器的时候,可以直接在服务器当中来获取到会话对象Session。如果是第一次请求,会话对象是不存在的,此时服务器会自动的创建一个Session 。而每一个Session ,它都有一个ID,我们称之为 Session 的ID

响应Cookie:

服务器端在给浏览器响应数据的时候,它会将 Session 的 ID 通过 Cookie 响应给浏览器

在响应头中加了一个Set-Cookie 响应头,浏览器会自动识别这个响应头,然后自动将Cookie存储在浏览器本地

查找Session:

在后续的每一次请求当中,都会将 Cookie 的数据获取出来,并且携带到服务端。服务器拿到Session的ID后,就会从众多的 Session 当中来找到当前请求对应的会话对象Session,这样就可以在同一次会话的多次请求之间来共享数据了

Session会话跟踪方案的优缺点:

优点:存储在服务端,安全

缺点:服务器集群环境下无法直接使用Session;Cookie的缺点

令牌技术

所谓的令牌,就是一个用户身份的标识

在浏览器发起请求。在请求登录接口的时候,如果登录成功,可以生成一个令牌,令牌就是用户的合法身份凭证,在响应数据的时候,可以直接将令牌响应给前端。

在前端接收到令牌之后,就需要将这个令牌存储起来。这个存储可以存储在 cookie 当中,也可以存储在其他的存储空间当中。

在后续的请求中,都需要将令牌携带到服务端。携带到服务端之后,接下来需要来校验令牌是否有效,如果有效,说明用户已经执行登录,如果无效,就说明用户之前并未执行登录操作。

在同一次会话的多次请求中,就可以将共享数据存储在令牌中

令牌会话跟踪方案的优缺点:

优点:支持PC端、移动端;解决集群环境下的认证问题;减轻服务器端存储压力

缺点:需要自己实现

更多推荐