当前位置: 首页 > 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://wiki.neutronadmin.com/news/179374/

相关文章:

  • 吉祥物设计网站wordpress站点目录
  • wordpress多站点不同主题新媒体seo培训
  • 孝感网站开发优搏好免费微信快速开发平台
  • 网站运营和维护都是干什么的外贸英文网站搭建的公司
  • 企业营销网站建设公司哪家好wordpress汉字注册
  • 南阳建网站公司做网站如何保证询盘数量
  • 360网站建设服务深圳高端女装品牌排行榜
  • 广东省建设教育协会官方网站python做网站模板
  • 珍岛做网站怎么样公司注册网上核名一直提交不成功
  • 网站开发小公司推荐深圳有什么网站
  • 蓝色系 网站建设部城市管理监督局网站官网
  • 合肥网站建设哪个公司做得比较好网站标题栏怎么做
  • 盐山网站制作网站注册实名制怎么做
  • 山西seo网站设计文字创意logo设计
  • 怎么做自己的网站自建一个页面手工制作礼品盒
  • 炒股网站怎么做saas平台是干嘛的
  • 如何发布一个自己的网站扬州网络优化推广
  • 网站开发课程培训建设电商网站需要多少钱
  • 织梦手机网站图片网易云wordpress代码
  • 如何建设一个门户网站企业域名免费申请
  • 大连哪里做网站好怎么做网站搜索框搜索
  • 将自己做的网站入到阿里云域名上新华舆情监测平台
  • 网站开发需要多少人小程序模板免费制作
  • 广州网站建设信科便宜百度商桥怎么添加到网站
  • 建立个人网站要钱吗活动拍摄
  • 哪个网站专题做的好网站建设安全协议
  • 做网站文字字号大小网站开发架构师
  • 玉溪做网站网页美工设计之中使用的主要软件是
  • 大连网站设计 仟亿科技阿里巴巴做网站接单几率
  • 安徽专业网站建设设计达州注册公司