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

网站建设培训哪家好自助建网站软件平台

网站建设培训哪家好,自助建网站软件平台,杭州网站案列,上海公司排名大全接上篇讲到授权与认证之jwt(三)刷新令牌该如何设计 这篇文章中要注意 注意事项: 因为在OAuth2 Filter类中要读写 ThreadLocal中的数据,所以OAuth:2 Filter类 必须要设置成多例的,否则ThreadLocal将无法使用。 一、在…

 接上篇讲到授权与认证之jwt(三)刷新令牌该如何设计 这篇文章中要注意

注意事项:
因为在OAuth2 Filter类中要读写
ThreadLocal中的数据,所以OAuth:2 Filter类
必须要设置成多例的,否则ThreadLocal将无法使用。

一、在配置文件中,添加)WT需要用到的密钥、过期时间和缓存过期时间。

emos:jwt:#密钥secret: abc123456#令牌过期时间(天)expire: 5#令牌缓存时间(天)cache-expire: 10

二、创建OAuth2Filter类

@Component
@Scope("prototype")
public class OAuth2Filter extends AuthenticatingFilter {@Autowiredprivate ThreadLocalToken threadLocalToken;@Value("${emos.jwt.cache-expire}")private int cacheExpire;@Autowiredprivate JwtUtil jwtUtil;//用于往redis中存取数据@Autowiredprivate RedisTemplate redisTemplate;/*** 拦截请求后,用于把令牌字符串封装成令牌对象*/@Overrideprotected AuthenticationToken createToken(ServletRequest request, ServletResponse response) throws Exception {HttpServletRequest req=(HttpServletRequest)request;String token = getRequestToken(req);if (StrUtil.isBlank(token)) {return null;}return new OAuth2Token(token);}/***判断哪种请求可以被shiro处理*/@Overrideprotected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue){HttpServletRequest req = (HttpServletRequest)request;//ajax提交application/json数据的时候,会先发出Option请求//这里要放行Option请求,不需要shiro处理if (req.getMethod().equals(RequestMethod.OPTIONS.name())) {return true;}//除了Options请求之外,所以请求都要被shiro处理return false;}/*** 该方法用于处理所有应该被shiro处理的请求*/@Overrideprotected boolean onAccessDenied(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {HttpServletRequest req = (HttpServletRequest)servletRequest;HttpServletResponse resp = (HttpServletResponse)servletResponse;//允许跨域请求resp.setHeader("Access-Control-Allow-Origin", req.getHeader("Origin"));resp.setHeader("Access-Control-Allow-Credentials", "true");resp.setContentType("text/html;charset=utf-8");threadLocalToken.clear();String token = getRequestToken(req);if (StrUtil.isBlank(token)) {resp.setStatus(HttpServletResponse.SC_UNAUTHORIZED);resp.getWriter().print("无效令牌");return false;}//验证token是否内容有效,验证是否过期try {jwtUtil.verifyToken(token);}catch (TokenExpiredException e){//查redis有没有该令牌if (redisTemplate.hasKey(token)) {//有数据,需要删掉缓存的老令牌,重新生成新令牌redisTemplate.delete(token);int userId=jwtUtil.getUserId(token);//创建新tokentoken=jwtUtil.createToken(userId);//把token存到redis中redisTemplate.opsForValue().set(token,userId+"",cacheExpire, TimeUnit.DAYS);//把token存到threadLocal中threadLocalToken.setToken(token);}else {//客户端和redis中令牌都过期,需要用户重新登录resp.setStatus(HttpServletResponse.SC_UNAUTHORIZED);resp.getWriter().print("令牌已过期");return false;}}catch (JWTDecodeException e){resp.setStatus(HttpServletResponse.SC_UNAUTHORIZED);resp.getWriter().print("无效令牌");return false;}//此时令牌没问题boolean b = executeLogin(req, resp);return b;}@Overrideprotected boolean onLoginFailure(AuthenticationToken token, AuthenticationException e, ServletRequest request, ServletResponse response) {HttpServletRequest req = (HttpServletRequest)servletRequest;HttpServletResponse resp = (HttpServletResponse)servletResponse;//允许跨域请求resp.setHeader("Access-Control-Allow-Origin", req.getHeader("Origin"));resp.setHeader("Access-Control-Allow-Credentials", "true");resp.setContentType("text/html;charset=utf-8");resp.setStatus(HttpServletResponse.SC_UNAUTHORIZED);try {resp.getWriter().print(e.getMessage());} catch (IOException ex) {throw new RuntimeException(ex);}return false;}@Overridepublic void doFilterInternal(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {super.doFilterInternal(request, response, chain);}/*** 获取token方法*/private String getRequestToken(HttpServletRequest req){String token = req.getHeader("token");if (StrUtil.isBlank(token)) {//从请求体中获取数据token=req.getParameter("token");}return token;}
}

http://www.dtcms.com/wzjs/832274.html

相关文章:

  • 南昌高端网站开发费用表网站加速
  • 怎么查网站接入商企业电商网站优化
  • 响应试企业网站淘宝客网站怎么做的人少了
  • 郑州网站搜索排名专做排名的网站
  • 站长之家网址查询做国外进口衣服的网站好
  • 纯英文网站建设指数是指什么
  • 北京网站主题制作网站建设服务费属于什么科目
  • 工会门户网站建设需求ui培训设计哪里好
  • 学习做网站什么是广告艺术设计
  • 广州建设工程交易中心网站徐州网站设计制作建设
  • 南京市建设中心网站wordpress占用带宽
  • 免费网站开发模板网站提高内容的丰富度创意
  • 动漫设计与制作图建站到网站收录到优化
  • 企业网站的必要性哈尔滨网站开发渠道
  • 大学生创业服务网站建设方案项目书南通建设工程造价信息网站
  • 英语做美食网站如何查看一个网站是不是用h5做的
  • 网站正在建设中 文案网络规划设计师自学能通过么
  • 做PPT不错的网站有哪些做网站需要多少钱平邑
  • 怎么随便搞个网站电子商务可以从事的职业
  • 网站建设需要钱吗网站建设最重要的环节
  • 简单建设企业办公网站成都网站制作工具
  • 肇庆网站制作案例上海市网站建
  • 中国建设银行公积金网缴网站最打动人心的广告语
  • 哪家网站优化公司好个人网站源代码
  • 嘉兴地区有人做网站吗网络公司起名大全免费
  • 哪些网上可以赚钱的网站wordpress 目录别名
  • 网站首页快照做网站要多钱
  • 深圳建设培训中心网站人人开发网站
  • 湖南省郴州市北湖区邮政编码seo网站排名助手
  • 企业网站建设制作公司建设网站查证书