温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何解决SpringSecurityOAuth2 redis反序列失败问题

发布时间:2021-10-21 11:14:02 来源:亿速云 阅读:288 作者:柒染 栏目:大数据

这期内容当中小编将会给大家带来有关如何解决SpringSecurityOAuth2 redis反序列失败问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

当在认证服务同时进行token获取以及token资源认证可以使用的时候。然后把资源服务整合到其他资源,在这同时又自定义是实现了UserDetails并重写了该接口方法,自定义实现了UserDetailsService,并重写了接口方法,返回使用的是自定义实现的UserDetails。在资源服务器认证token的时候就会出现redis序列化失败的问题, 示例:

/**
 * @Description 自定义实现UserDetails
 * @Author wwz
 * @Date 2019/07/28
 * @Param
 * @Return
 */
@Data
public class MyUserDetails implements UserDetails {
    private AuthUser user;

    private Collection<? extends GrantedAuthority> authorities;

    public MyUserDetails(AuthUser user, Collection<? extends GrantedAuthority> authorities) {
        this.user = user;
        this.authorities = authorities;
    }

    public MyUserDetails() {
    }

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return authorities;
    }
	其他省略......
/**
 * @Description 自定义用户验证数据
 * @Author wwz
 * @Date 2019/07/28
 * @Param
 * @Return
 */

@Service
public class MyUserDetailsService implements UserDetailsService {

    @Autowired
    private AuthUserMapper authUserMapper;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        // 自定义用户权限数据
        AuthUser authUser = authUserMapper.selectByUsername(username);
        if (authUser == null) {
            throw new UsernameNotFoundException("用户名不存在");
        }
        if (!authUser.getValid()) {
            throw new UsernameNotFoundException("用户不可用");
        }
        Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
 // 中间逻辑省略。。。。。。
        MyUserDetails userDetails = new MyUserDetails(authUser, grantedAuthorities);
        return userDetails;
    }
}
org.springframework.data.redis.serializer.SerializationException

导致问题的原因是,在生成token的时候使用了自定义的UserDetails的进行了token序列化,反序列化的时候,在新项目中找不到自定义的实现,只能使用默认的实现来。 解决的方案是就是把自定义实现的UserDetails复制一份到资源项目中。

上述就是小编为大家分享的如何解决SpringSecurityOAuth2 redis反序列失败问题了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI