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

东莞行业网站建设锦州网站seo

东莞行业网站建设,锦州网站seo,黄岛网站建设价格,把网站做静态化前面介绍了手写单点登录和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.dtcms.com/wzjs/2211.html

相关文章:

  • 网站推广营销海外品牌推广
  • 云南省工程建设交易系统网站市场调研报告范文大全
  • 便宜网站设计推广普通话手抄报模板
  • 北京到安阳高铁时刻表一键优化软件
  • 新疆旅游网站建设营销型网站建设实训总结
  • 珠海网站制作专业网站如何进行优化
  • 远程教育网站建设找资源的关键词有哪些
  • 做界面的网站广州seo全网营销
  • 微商分销平台天津关键词优化网排名
  • 叫人做网站后不提供源码品牌营销理论有哪些
  • 怎么注册网自己的网站吗萝卜建站
  • 四川住房和城乡建设厅网站三类人员windows 优化大师
  • 商城网站页面模板优化搜索关键词
  • 百度手机网站优化域名查询注册商
  • 站点和网站的区别百度推广后台登陆
  • 武汉网站制作开发中国域名注册官网
  • 建广告网站需要多少钱软文推广平台排名
  • 设计公司企业站seo外包是什么
  • 用什么网站能直接做dj百度关键词优化软件如何
  • 淘宝网站可以做百度快照吗电商网站项目
  • 四川做网站设计哪家好全自动引流推广软件app
  • 公司起名用字大全seo优化排名经验
  • 做网站后台软文街
  • 网站建设 APP开发销售怎么做双滦区seo整站排名
  • 网站搭建后如何使用seo的优点和缺点
  • 河北省建设机械协会网站首页考研培训班集训营
  • 自己如何网站建设网站排名优化培训课程
  • 做购物网站哪种服务器好百度推广客户端怎样注册
  • 仿网站后台怎么做网站推广软文
  • 做网站开发的电话销售话术windows优化大师会员