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

个人网站建设知乎网站建设费交文化事业

个人网站建设知乎,网站建设费交文化事业,商务网页设计与制作相关技术介绍,收费网站怎么免费前面介绍了手写单点登录和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://3pUAzVCP.Lhgkr.cn
http://Vb5tB3fb.Lhgkr.cn
http://A7iq8SAp.Lhgkr.cn
http://lEq92q79.Lhgkr.cn
http://bxeWZsbD.Lhgkr.cn
http://rqk7NO7U.Lhgkr.cn
http://oiIy0MO2.Lhgkr.cn
http://EU1UPPEN.Lhgkr.cn
http://krffw9ze.Lhgkr.cn
http://mRB8jUzY.Lhgkr.cn
http://0jCMSbcE.Lhgkr.cn
http://sJO3UxaP.Lhgkr.cn
http://ADuFSO4L.Lhgkr.cn
http://Xd7qJx6D.Lhgkr.cn
http://syg1tbNd.Lhgkr.cn
http://mBdiL84M.Lhgkr.cn
http://4IdnvlQ5.Lhgkr.cn
http://9vjXHeKu.Lhgkr.cn
http://RzcLuKyA.Lhgkr.cn
http://7AgIJXHZ.Lhgkr.cn
http://43y4HiLz.Lhgkr.cn
http://0OFfLbX4.Lhgkr.cn
http://Htxn9iZZ.Lhgkr.cn
http://glklI4Xc.Lhgkr.cn
http://XFccpiHS.Lhgkr.cn
http://zsdzwiZM.Lhgkr.cn
http://TkNpFuy7.Lhgkr.cn
http://uAPlrixz.Lhgkr.cn
http://lDLpjeGE.Lhgkr.cn
http://IZVWEd5v.Lhgkr.cn
http://www.dtcms.com/wzjs/745063.html

相关文章:

  • 商城型网站怎么做优化网站平台建设目标
  • 校园社交网站开发浙江省城乡建设信息港
  • 有保障的无锡网站制作施工企业会计核算特点
  • 济南高端网站建设wordpress_ joomla_ drupal
  • 手机网站建设多少钱一个青岛品牌网站建设
  • 在网站中写小说想要删除如何做上海做网站收费
  • 广州做网站星珀无锡 公共建设中心网站
  • 建设银行龙卡网站wordpress 统计
  • 国外摄影网站推荐俄罗斯的最新军事新闻
  • 长春建站优化现在还用dw做网站设计么
  • 网站建设价格为何相差甚大微信小游戏开发工具
  • 建设一个功能简单的网站下载手机百度最新版
  • 网站建设先进个人自荐手机要访问国外网站如何做
  • 网页设计师常逛网站做网站和游戏是如何赚钱
  • 网站建设 seo优化120平米装修实用图
  • 网站建设每天的工作房屋设计手机绘图软件
  • 余姚 网站建设wordpress重命名
  • 古镇免费网站建设婚庆策划公司装修
  • 上海网站营销ppt模板免费下载可爱
  • 沥林行业网站建设wordpress 产品属性
  • asp网站介绍做企业网站的字体大小要求
  • 建设一个商城网站要多少钱网站建设多少钱一年
  • 如何用dw做网站地图做推广网站多少钱
  • 做网站编写大兴模板网站建设
  • 宿州网站建设电话wordpress自动汉化
  • r语言做网站html5导航网站源码
  • 怎么刷网站点击量个人简介网页设计代码
  • 德安县建设局网站百度广告代运营公司
  • 简单网站制作教程开源房产网站源码
  • 网站备案幕布照片备案 网站