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

哪个网站的织梦源码好网赢做网站怎么样

哪个网站的织梦源码好,网赢做网站怎么样,亚马逊代运营,如何制作游戏前面介绍了手写单点登录和JWT的应用,本文结合SpringSecurity来介绍下在SpringBoot项目中基于SpringSecurity作为认证授权框架的情况下如何整合JWT来实现Token的处理。 一、认证思路分析 SpringSecurity主要是通过过滤器来实现功能的!我们要找到SpringSecurity实现认证和校验…

  前面介绍了手写单点登录和JWT的应用,本文结合SpringSecurity来介绍下在SpringBoot项目中基于SpringSecurity作为认证授权框架的情况下如何整合JWT来实现Token的处理。

一、认证思路分析

  SpringSecurity主要是通过过滤器来实现功能的!我们要找到SpringSecurity实现认证和校验身份的过滤器!

1.回顾集中式认证流程

用户认证
  使用 UsernamePasswordAuthenticationFilter过滤器中 attemptAuthentication方法实现认证功能,该过滤器父类中 successfulAuthentication方法实现认证成功后的操作。认证失败是在 unsuccessfulAuthentication

身份校验

  使用 BasicAuthenticationFilter 过滤器中 doFilterInternal方法验证是否登录,以决定能否进入后续过滤器。

2.分析分布式认证流程

用户认证
  由于分布式项目,多数是前后端分离的架构设计,我们要满足可以接受异步post的认证请求参数,需要修改UsernamePasswordAuthenticationFilter过滤器中attemptAuthentication方法,让其能够接收请求体。
  另外,默认successfulAuthentication方法在认证通过后,是把用户信息直接放入session就完事了,现在我们需要修改这个方法,在认证通过后生成token并返回给用户。
身份校验
  原来BasicAuthenticationFilter过滤器中doFilterInternal方法校验用户是否登录,就是看session中是否有用户信息,我们要修改为,验证用户携带的token是否合法,并解析出用户信息,交给SpringSecurity,以便于后续的授权功能可以正常使用。

二、具体实现

1.创建项目

  创建一个SpringBoot项目.引入必要的依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.bobo</groupId><artifactId>security-jwt-common</artifactId><version>1.0-SNAPSHOT</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.80</version></dependency><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.4.0</version></dependency></dependencies>

2.JWT工具类

  引入前面创建的JWT的工具类。


import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.AlgorithmMismatchException;
import com.auth0.jwt.exceptions.SignatureVerificationException;
import com.auth0.jwt.interfaces.DecodedJWT;import java.security.SignatureException;
import java.util.Calendar;
import java.util.Map;public class JWTUtils {// 秘钥private static final String SING = "123qwaszx";/*** 生成Token  header.payload.sing 组成* @return*/public static String getToken(Map<String,String> map){Calendar instance = Calendar.getInstance();instance.add(Calendar.DATE,7); // 默认过期时间 7天JWTCreator.Builder builder = JWT.create();// payload 设置map.forEach((k,v)->{builder.withClaim(k,v);});// 生成Token 并返回return builder.withExpiresAt(instance.getTime()).sign(Algorithm.HMAC256(SING));}/*** 验证Token* @return*     DecodedJWT  可以用来获取用户信息*/public static DecodedJWT verify(String token){// 如果不抛出异常说明验证通过,否则验证失败DecodedJWT verify = null;try {verify = JWT.require(Algorithm.HMAC256(SING)).build().verify(token);}catch (SignatureVerificationException e){e.printStackTrace();}catch (AlgorithmMismatchException e){e.printStackTrace();}catch (Exception e){e.printStackTrace();}return verify;}
}

3.用户实例

  创建用户的实例,添加必要的属性

@Data
public class UserPojo implements UserDetails {private Integer id;private String username;private String password;private Integer status;@JsonIgnore@Overridepublic Collection<? extends GrantedAuthority> getAuthorities() {List<SimpleGrantedAuthority> auth = new ArrayList<>();auth.add(new SimpleGrantedAuthority("ROLE_ADMIN"));return auth;}@Overridepublic String getPassword() {return this.password;}@Overridepublic String getUsername() {
http://www.yayakq.cn/news/815325/

相关文章:

  • 网站建设市场推广招聘嘉兴市建设官方网站
  • 做网站都需要买什么问题做恐怖网站
  • 龙岗建设网站公司部门网站建设的工作汇报
  • 温岭网站建设网站开发工具哪个好
  • 公司核准名称网站注重网站开发设计与建设
  • 写作网站可以签约未成年吗wordpress上传本地主题
  • 使用session和cookie实现网站自动登录 .netdede网站漏洞
  • gzip 网站购物网站前台模板
  • 想做一个网站wordpress优化方案
  • 营销型网站设计招聘360推广 网站建设
  • 该网站的域名为国外设计网站怎么进入
  • 网站外链建设是什么长沙移动网站建设哪家好
  • 北京网站建设公司兴田德润电话WordPress 知更鸟主题
  • 江宁建设局网站网站建设发言材料
  • 广东外贸网站建设上海建设工程施工许可证查询网站6
  • 想用自己电脑做服务器做个网站吗惠州做网站好的公司
  • 台州企业网站设计html网站支付链接怎么做的
  • 做神马网站优最好的购物网站排名
  • 做网站怎样申请域名商标设计图案免费
  • 龙岗商城网站建设最好网站建设报价购物
  • 上海建设网站定做代理注册公司协议
  • 网站开发的响应式和兼容性问题wordpress newsroom
  • 网站移动版怎么做logo制作教程
  • 网站用什么语言编写生态建设研究所网站
  • 海南省住房和城乡建设官方网站安徽百度关键词优化
  • 长春seo建站建设工程教育网首页
  • 梅州做网站需要多少钱网站推广智选刺盾云下拉
  • 建设网站公司专业服务南京建设局的网站首页
  • 织梦网站排版能调整吗建手机网站软件
  • 就业网站建设总结深圳自适应网站建设报价