美文网首页开发随笔
SpringSecurity(一):表单认证(待整理)

SpringSecurity(一):表单认证(待整理)

作者: 8813d76fee36 | 来源:发表于2017-11-15 11:28 被阅读37次

随笔记录,待整理

SpringSecurity + JWT

表单认证

  • 自定义WebSecurityConfigurer
    新建类BrowserSecurityConfigurer继承SpringSecurity的WebSecurityConfigurerAdapter,并将自定义类加上@Configuration注解作为配置类使用。
  • 重写configure(HttpSecurity http)方法
    http.formLogin()则为表单认证。


    image.png
@Configuration
public class BrowserSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.formLogin()
                .and()
                .authorizeRequests()
                .anyRequest()
                .authenticated();
    }
}

此时访问后台接口将会弹出表单登录页面


image.png

自定义用户认证逻辑

  • 获取用户信息并处理
    使用SpringSecurity的UserDetailsService接口的loadUserByUsername(String username)方法。该方法返回一个UserDetails接口实现的对象。
image.png
  • 自定义UserDetailsService实现
    新建MyUserDetailsService实现UserDetailsService,重写loadUserByUsername方法,并为该类打上@Component注解使其成为Spring管理的Bean。
    image.png

登录页表单的用户名将传递给username参数接收,我们可以使用接收到的用户名去数据库里查询该用户的数据。

image.png image.png
此时在该方法中返回的User对象是org.springframework.security.core.userdetails.User
该类实现了UserDetails接口。
image.png
  • 用户校验逻辑
    UserDetails接口提供以下四个方法,自己实现其逻辑:
    1.boolean isAccountNonExpired(); 账户是否过期。
    2.boolean isAccountNonLocked(); 账户是否锁定(账户是否冻结,账户可恢复)。
    3.boolean isCredentialsNonExpired(); 密码是否过期。
    4.boolean isEnabled(); 账户是否可用(用户是否被删除,被删除的账户不可恢复)。

User类有一个7个参数的构造器,其中四个布尔参数对应上述四个校验结果。

image.png

密码加密及解密

SpringSecurity使用org.springframework.security.crypto.password.PasswordEncoder

代码
我们调用encode方法将用户传过来的密码加密。SpringSecurity调用matches方法校验密码。

若让框架按加密方式校验用户输入的密码,需要配置加密实现类。


文档说明
image.png

相关文章

网友评论

    本文标题:SpringSecurity(一):表单认证(待整理)

    本文链接:https://www.haomeiwen.com/subject/celcvxtx.html