当前位置: 首页 > news >正文

天水网站建设公司排名株洲网站建设方案

天水网站建设公司排名,株洲网站建设方案,做搬家服务网站问卷调查结果,关于工程项目建设的网站登录校验-Filter 分析 过滤器Filter的快速入门以及使用细节我们已经介绍完了#xff0c;接下来最后一步#xff0c;我们需要使用过滤器Filter来完成案例当中的登录校验功能。 我们先来回顾下前面分析过的登录校验的基本流程#xff1a; 要进入到后台管理系统#xff0c;我…登录校验-Filter 分析 过滤器Filter的快速入门以及使用细节我们已经介绍完了接下来最后一步我们需要使用过滤器Filter来完成案例当中的登录校验功能。 我们先来回顾下前面分析过的登录校验的基本流程 要进入到后台管理系统我们必须先完成登录操作此时就需要访问登录接口login。 登录成功之后我们会在服务端生成一个JWT令牌并且把JWT令牌返回给前端前端会将JWT令牌存储下来。 在后续的每一次请求当中都会将JWT令牌携带到服务端请求到达服务端之后要想去访问对应的业务功能此时我们必须先要校验令牌的有效性。 对于校验令牌的这一块操作我们使用登录校验的过滤器在过滤器当中来校验令牌的有效性。如果令牌是无效的就响应一个错误的信息也不会再去放行访问对应的资源了。如果令牌存在并且它是有效的此时就会放行去访问对应的web资源执行相应的业务操作。 大概清楚了在Filter过滤器的实现步骤了那在正式开发登录校验过滤器之前我们思考两个问题 所有的请求拦截到了之后都需要校验令牌吗 答案登录请求例外 拦截到请求后什么情况下才可以放行执行业务操作 答案有令牌且令牌校验通过(合法)否则都返回未登录错误结果 具体流程 我们要完成登录校验主要是利用Filter过滤器实现而Filter过滤器的流程步骤 基于上面的业务流程我们分析出具体的操作步骤 获取请求url判断请求url中是否包含login如果包含说明是登录操作放行获取请求头中的令牌token判断令牌是否存在如果不存在返回错误结果未登录解析token如果解析失败返回错误结果未登录放行 代码实现 分析清楚了以上的问题后我们就参照接口文档来开发登录功能了登录接口描述如下 请求参数 参数格式application/json 参数说明 名称类型是否必须备注usernamestring必须用户名passwordstring必须密码请求数据样例 {username: jinyong,password: 123456 }响应数据 参数格式application/json 参数说明 名称类型是否必须默认值备注其他信息codenumber必须响应码, 1 成功 ; 0 失败msgstring非必须提示信息datastring必须返回的数据 , jwt令牌响应数据样例 {code: 1,msg: success,data: eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoi6YeR5bq4IiwiaWQiOjEsInVzZXJuYW1lIjoiamlueW9uZyIsImV4cCI6MTY2MjIwNzA0OH0.KkUc_CXJZJ8Dd063eImx4H9Ojfrr6XMJ-yVzaWCVZCo }备注说明 用户登录成功后系统会自动下发JWT令牌然后在后续的每次请求中都需要在请求头header中携带到服务端请求头的名称为 token 值为 登录时下发的JWT令牌。 如果检测到用户未登录则会返回如下固定错误信息 {code: 0,msg: NOT_LOGIN,data: null }登录校验过滤器LoginCheckFilter Slf4j WebFilter(urlPatterns /*) //拦截所有请求 public class LoginCheckFilter implements Filter {Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {//前置强制转换为http协议的请求对象、响应对象 转换原因要使用子类中特有方法HttpServletRequest request (HttpServletRequest) servletRequest;HttpServletResponse response (HttpServletResponse) servletResponse;//1.获取请求urlString url request.getRequestURL().toString();log.info(请求路径{}, url); //请求路径http://localhost:8080/login//2.判断请求url中是否包含login如果包含说明是登录操作放行if(url.contains(/login)){chain.doFilter(request, response);//放行请求return;//结束当前方法的执行}//3.获取请求头中的令牌tokenString token request.getHeader(token);log.info(从请求头中获取的令牌{},token);//4.判断令牌是否存在如果不存在返回错误结果未登录if(!StringUtils.hasLength(token)){log.info(Token不存在);Result responseResult Result.error(NOT_LOGIN);//把Result对象转换为JSON格式字符串 (fastjson是阿里巴巴提供的用于实现对象和json的转换工具类)String json JSONObject.toJSONString(responseResult);response.setContentType(application/json;charsetutf-8);//响应response.getWriter().write(json);return;}//5.解析token如果解析失败返回错误结果未登录try {JwtUtils.parseJWT(token);}catch (Exception e){log.info(令牌解析失败!);Result responseResult Result.error(NOT_LOGIN);//把Result对象转换为JSON格式字符串 (fastjson是阿里巴巴提供的用于实现对象和json的转换工具类)String json JSONObject.toJSONString(responseResult);response.setContentType(application/json;charsetutf-8);//响应response.getWriter().write(json);return;}//6.放行chain.doFilter(request, response);} }JWT导入的maven依赖 !--JWT令牌--dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.9.1/version/dependencyJWT的工具类 import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import java.util.Date; import java.util.Map;public class JwtUtils {private static String signKey shisan;private static Long expire 43200000L;/*** 生成JWT令牌* param claims JWT第二部分负载 payload 中存储的内容* return*/public static String generateJwt(MapString, Object claims){String jwt Jwts.builder().addClaims(claims).signWith(SignatureAlgorithm.HS256, signKey).setExpiration(new Date(System.currentTimeMillis() expire)).compact();return jwt;}/*** 解析JWT令牌* param jwt JWT令牌* return JWT第二部分负载 payload 中存储的内容*/public static Claims parseJWT(String jwt){Claims claims Jwts.parser().setSigningKey(signKey).parseClaimsJws(jwt).getBody();return claims;} }在上述过滤器的功能实现中我们使用到了一个第三方json处理的工具包fastjson。我们要想使用需要引入如下依赖 dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.76/version /dependency登录校验的过滤器我们编写完成了接下来我们就可以重新启动服务来做一个测试 测试前先把之前所编写的测试使用的过滤器暂时注释掉。直接将WebFilter注解给注释掉即可。 测试1未登录是否可以访问部门管理页面 首先关闭浏览器重新打开浏览器在地址栏中输入http://localhost:9528/#/system/dept 由于用户没有登录登录校验过滤器返回错误信息前端页面根据返回的错误信息结果自动跳转到登录页面了 测试2先进行登录操作再访问部门管理页面 登录校验成功之后可以正常访问相关业务操作页面 总结 这个过滤器检查请求的URL是否包含 “login”。如果包含则直接允许请求继续。如果不包含 “login”则检查JWT令牌的存在和有效性。如果令牌不存在或无效返回一个JSON格式的 “NOT_LOGIN” 错误响应。如果令牌存在并且有效则允许请求继续。
http://www.pierceye.com/news/575543/

相关文章:

  • 做网站客户最关心的是什么制作网页原型的目的
  • 电子商务网站建设工具河南安阳吧
  • 南通网站建设公司哪个好肯德基的网站建设
  • 高端大气网站源码wordpress做双语网站
  • 360网站推广东莞凤岗
  • 公司网站高端网站建设赣州做网站多少钱
  • dw做网站怎么发布建设银行官方网站登录入口
  • 怎样查看网站建设时间免费外贸自建网站
  • 网站备案注销原因网站建设入账
  • 番禺做网站哪家好wordpress 样式引用
  • 网站研发进度表下载网站建设亿码酷适合5
  • 对网站域名销户怎么做舆情监控都有哪些内容
  • 南宁做网站优化企业网站开发合同
  • 网站做京东联盟公司注册网上核名入口
  • jsp做的零食网站下载一分钟做网站
  • 营销网站竞品分析报告上海平面网站
  • 网站建设 邦机票网站制作
  • 网站开发从整体上用vps刷网站流量要怎么做
  • 搭建一个网站 优帮云网站无法访问的原因
  • 卖印花图案设计网站北京管庄网站建设公司
  • 北京石景山网站建设外贸网络推广经验
  • 好看的网站源码手机网站在线生成
  • 响应式网站设计的主页网站定制合同
  • 做查询网站有哪些杭州市建设部门网站
  • 免费做外贸的网站制作logo网站
  • 网站改版意义服务营销案例100例
  • 服装厂做1688网站效果好不好做lol数据的网站有哪些
  • 棋牌代理平台网站优化大赛
  • 网站制作视频教程新手必看深圳建网站哪个公
  • 做网站的公司盐城网站排名优化培训