javaWeb开发之登录认证
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端、移动端;解决集群环境下的认证问题;减轻服务器端存储压力
缺点:需要自己实现
更多推荐


所有评论(0)