买了一个域名怎么做网站,微信开发者工具代码怎么写,宁波做百度网站,怎么建设一个人自己网站登录功能
登录思路 联调测试
登录校验
问题#xff1a;在未登录情况下#xff0c;我们也可以直接访问部门管理、员工管理等功能。 登录标记 用户登录成功之后#xff0c;每一次请求中#xff0c;都可以得到该标记。 统一拦截 过滤器Filter拦截器Interceptor 会话技术
会…登录功能
登录思路 联调测试
登录校验
问题在未登录情况下我们也可以直接访问部门管理、员工管理等功能。 登录标记 用户登录成功之后每一次请求中都可以得到该标记。 统一拦截 过滤器Filter拦截器Interceptor 会话技术
会话用户打开浏览器访问web服务器的资源会话建立直到有一方断开连接会话结束。在一次会话中可以包含多次请求和响应。
会话是与浏览器有关的。
会话跟踪一种维护浏览器状态的方法服务器需要识别多次请求是否来自于同一浏览器以便在同一次会话的多次请求间共享数据。
会话跟踪方案
客户端会话跟踪技术Cookie服务端会话跟踪技术Session令牌技术
会话跟踪方案对比 JWT令牌
全称JSON Web Token JSON Web Tokens - jwt.io
定义了一种简洁的、自包含的格式用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在这些信息是可靠的。 组成
第一部分Header(头 记录令牌类型、签名算法等。 例如{alg:HS256,type:JWT}第二部分Payload(有效载荷携带一些自定义信息、默认信息等。 例如{id:1,username:Tom}第三部分Signature(签名防止Token被篡改、确保安全性。将header、payload并加入指定秘钥通过指定签名算法计算而来。
Base64是一种基于64个可打印字符A-Z a-z 0-9 /来表示二进制数据的编码方式。 场景登录认证。
登录成功后生成令牌
后续每个请求都要携带JWT令牌系统在每次请求处理之前先校验令牌通过后再处理 jdk版本高添加jaxb-api依赖 JWT校验时使用的签名秘钥必须和生成JWT令牌时使用的秘钥是配套的。
如果JWT令牌解析校验时报错则说明 JWT令牌被篡改 或 失效了令牌非法。 登录-生成令牌
引入JWT令牌操作工具类。登录完成后调用工具类生成JWT令牌并返回。 PostMapping(/login)public Result Login(RequestBody Emp emp){log.info(员工登录{},emp);Emp eempService.login(emp);//登录成功生成令牌下发令牌if( e !null){MapString,Object claims new HashMap();claims.put(id,e.getId());claims.put(name,e.getName());claims.put(username,e.getUsername());String jwtJwtUtils.generateJwt(claims); //jwt包含了当前登录的员工信息return Result.success(jwt);}//登陆失败返回错误信息return Result.error(用户名或密码错误);}过滤器Filter
概念Filter 过滤器是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。
过滤器可以把对资源的请求拦截下来从而实现一些特殊的功能。
过滤器一般完成一些通用的操作比如登录校验、统一编码处理、敏感字符处理等。 快速入门
1.定义Filter定义一个类实现 Filter 接口并重写其所有方法。
2.配置FilterFilter类上加 WebFilter 注解配置拦截资源的路径。引导类上加 ServletComponentScan 开启Servlet组件支持。 WebFilter(urlPatterns /*)
public class DemoFilter implements Filter {//初始化方法Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println(init初始化方法执行了);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(拦截到了请求);//放行filterChain.doFilter(servletRequest,servletResponse);}Overridepublic void destroy() {System.out.println(destory销毁方法执行了);}
}
实现Filter接口
配置
WebFilterurlPatterns/)
ServletComponentScan
详解 放行后访问对应资源资源访问完成后还会回到Filter中吗 会
如果回到Filter中是重新执行还是执行放行后的逻辑呢 执行放行后逻辑 Filter 可以根据需求配置不同的拦截资源路径 拦截路径 urlPatterns值 含义 拦截具体路径 /login 只有访问 /login 路径时才会被拦截 目录拦截 /emps/* 访问/emps下的所有资源都会被拦截 拦截所有 /* 访问所有资源都会被拦截 过滤器链
一个web应用中可以配置多个过滤器这多个过滤器就形成了一个过滤器链。 拦截器Interceptor
简介快速入门
概念是一种动态拦截方法调用的机制类似于过滤器。Spring框架中提供的用来动态拦截控制器方法的执行。
作用拦截请求在指定的方法调用前后根据业务需要执行预先设定的代码。
快速入门
定义拦截器实现HandlerInterceptor接口并重写其所有方法。注册拦截器
拦截器可以根据需求配置不同的拦截路径 拦截路径 含义 举例 /* 一级路径 能匹配/depts/emps/login不能匹配 /depts/1 /** 任意级路径 能匹配/depts/depts/1/depts/1/2 /depts/* /depts下的一级路径 能匹配/depts/1不能匹配/depts/1/2/depts /depts/** /depts下的任意级路径 能匹配/depts/depts/1/depts/1/2不能匹配/emps/1
Filter与Intercentor
接口规范不同过滤器需要实现Filter接口而拦截器需要实现HandlerInterceptor接口。
拦截范围不同过滤器Filter会拦截所有的资源而Interceptor只会拦截Spring环境中的资源。 登录校验-Interceptor 异常处理
程序开发过程中不可避免的会遇到异常现象