zeromemos
最好的学习方法就是输出所学的知识

使用fastJson序列化和反序列化UserDetails对象

根据流程图http://www.zeromemos.com/index/article/read.html?id=409


修改MySecurityUser对象

public class MySecurityUser extends User {

    //自己的User实体类,方便后面存取需要的用户信息
    private SysUser sysUser;

    //Redis校验码
    private String checkCode;

    //权限集合用于反序列化时填充父类权限
    private List<String> permissions;

    //分别将用户、密码和权限集合传到父类的构造函数里
    public MySecurityUser(SysUser sysUser, List<String> permissions) {
        super(sysUser.getUsername(), sysUser.getPassword(), AuthorityUtils.createAuthorityList(permissions.toArray(new String[0])));
        //将密码置空存到Redis
        sysUser.setPassword("");
        this.permissions = permissions;
        this.sysUser = sysUser;
    }

    //提供全参构造器 用于反序列化时填充属性
    public MySecurityUser(SysUser sysUser, String checkCode, List<String> permissions) {
        super(sysUser.getUsername(), sysUser.getPassword(), AuthorityUtils.createAuthorityList(permissions.toArray(new String[0])));
        this.sysUser = sysUser;
        this.checkCode = checkCode;
        this.permissions = permissions;
    }

    public SysUser getSysUser() {
        return sysUser;
    }

    public void setSysUser(SysUser sysUser) {
        this.sysUser = sysUser;
    }

    public String getCheckCode() {
        return checkCode;
    }

    public void setCheckCode(String checkCode) {
        this.checkCode = checkCode;
    }

    public List<String> getPermissions() {
        return permissions;
    }

    public void setPermissions(List<String> permissions) {
        this.permissions = permissions;
    }
}

反序列化时会用全参构造器进行反序列化,我们用permissions和sysUser构造父类里的用户名和权限集合

评论区

关于我们

本站主要用于记录个人学习笔记,网站开发中,如需以前站内资料请加QQ群272473835索取。注册账号仅提供回帖功能,可不注册!

微信公众号