Springboot 使用Security完成注册

  • Post author:
  • Post category:其他


1.方便测试功能时,关闭登陆功能

2.新建三张表 用户表 角色表 用户角色关系表

enabled表示用户是否过期,locked表示用户是否被锁

这里密码是明文的,不正确。后面有加密的办法

3.创建实体类

public class User implements UserDetails {
    private Integer userId;
    private String username;
    private String password;
    private Boolean enabled;
    private Boolean locked;
    private List<Role> roles;

    /*
    * 获取当前用户对象具有的角色信息
    * */
    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        List<SimpleGrantedAuthority> authorities = new ArrayList<>();
        for (Role role : roles){
            authorities.add(new SimpleGrantedAuthority(role.getName()));
        }
        return authorities;
    }

    /*
    * 获取当前用户的密码
    * */
    @Override
    public String getPassword() {
        return password;
    }
    /*
    * 获取当前用户的用户名
    * */
    @Override
    public String getUsername() {
        return username;
    }
    /*
    * 当前用户是否未过期
    * */
    @Override
    public boolean isAccountNonExpired() {
        return true;
    }
    /*
    * 当前用户是否未锁定
    * */
    @Override
    public boolean isAccountNonLocked() {
        return !locked;
    }
    /*
    * 当前账户密码是否未过期
    * */
    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }
    /*
    * 当前账户是否可用
    * */
    @Override
    public boolean isEnabled() {
        return enabled;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Boolean getEnabled() {
        return enabled;
    }

    public void setEnabled(Boolean enabled) {
        this.enabled = enabled;
    }

    public Boolean getLocked() {
        return locked;
    }

    public void setLocked(Boolean locked) {
        this.locked = locked;
    }

    public List<Role> getRoles() {
        return roles;
    }

    public void setRoles(List<Role> roles) {
        this.roles = roles;
    }
}

4.注册Dao编写

这里注意一下:

mapper的xml中, 不需要(也不能)给insert, update, delete指定resultType, 如这里所解释

http://mybatis.github.io/mybatis-3/sqlmap-xml.html

insert, update, delete只支持这些Attributes: id, parameterType, parameterMap, flushCache, timeout, statementType, useGeneratedKeys, keyProperty, keyColumn, databaseId

5.注册Service编写

6.注册控制层编写

7.如果出现403的情况

暂时将csrf关闭



版权声明:本文为Qin_xian_shen原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。