ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringSecurity-02-微服务与授权

2021-06-22 16:04:46  阅读:167  来源: 互联网

标签:02 Redis SpringSecurity token charSequence 授权 权限 重写 public


 

微服务架构的授权方式

 

 WebSocket 和 Redis 缓存token Jwt 按照特定规则生成字符串

 

在微服务架构中使用SpringSecurity一般会重写PasswordEncoder这个接口,接口重写的方法:

@Component
public class DefaultPasswordEncoder implements PasswordEncoder {

    @Overrider
    public String encode(CharSequence charSequence){
        //使用MD5的方式进行加密
        return MD5.encrypt(charSequence.toString);
    }
    @Override
    public boolean matches(CharSequence charSequence.String
    encodePassword){
        return encodedPassword.equals(MD5.encrypt(charSequence.toString()));
    }
}

使用jwt生成token,存到Redis中,颁发给用户,用户存到Session内,每一次发送请求的时候,都将token取出放在headers内携带着一起发请求,headers取出token与Redis内的比较,判断用户的权限,再从token中取信息去Redis中查权限表。即登录时将权限表上传到Redis中,根据用户的token从Redis中再取出权限表,这样多了一步验证,然后每次请求的时候都要判断token是否一致,而且用户是否拥有权限。这样每次更新权限的时候,修改完数据库的权限表,再修改Redis缓存里的权限表即可,请求时重新拉取权限表。

首先引入Jwt

<dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.0</version>
</dependency>

 

自定义认证授权的方法

继承两个Filter 修改认证授权过程 一个是UsernamePasswordAuthenticationFilter 

要重写三个方法 

①public Authentication attemptAuthentication

②protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response,FilterChain chain)

③protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed)

 

第二个是BasicAuthenticationFilter 重写doFilterInternal方法

即可实现自定义认证授权

标签:02,Redis,SpringSecurity,token,charSequence,授权,权限,重写,public
来源: https://www.cnblogs.com/KannoBupt/p/14918917.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有