SpringBoot(3)集成Spring Security 5.0.11 自定义认证逻辑

Spring Security 框架默认的认证业务逻辑是不能满足我们产品或项目的需求的,这时候如果我们使用Spring Security 框架就需要自定义用户认证逻辑。
自定义认证逻辑,我们需要关心几个问题:

  • 如何处理获取用户信息
  • 如何处理校验用户信息
  • 如何处理密码加密解密

Spring Security自定义认证逻辑

1.如何处理获取用户信息

Spring Security 提供了UserDetailsService 接口,用来处理用户信息获取,我们只要实现这个接口
,对loadUserByUsername方法进行实现,返回UserDetails 对象即可,在这个方法中,我们可以通过username字段(帐号)去数据库查找相应的用户信息。

public interface UserDetailsService {
   
	UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}

2.如何处理校验用户信息

同样用户校验信息,Spring Security 提供了UserDetails接口,Spring Security 对 UserDetails接口有默认实现User,我们直接使用它提供的即可

public interface UserDetails extends Serializable {
   

	Collection<? extends GrantedAuthority> getAuthorities();

	/**
	 * 密码
	 */
	String getPassword();

	/**
	 * 帐号
	 */
	String getUsername();

	/**
	 * 账户是否过期
	 */
	boolean isAccountNonExpired();

	/**
	 * 用户是否被锁定
	 */
	boolean isAccountNonLocked();

	/**
	 * 用户是否已过期
	 */
	boolean isCredentialsNonExpired();

	/**
	 * 用户是否被禁用
	 */
	boolean isEnabled();
}

3.如何处理密码加密解密

Spring Security 提供了 PasswordEncoder 接口,来处理密码加密和匹配问题。密码加密使我们来调用的,如果在用户注册的是有没有调用会密码匹配不上。

public interface PasswordEncoder {
   

	/**
	 * 这个方法当用户注册的时候调用
	 */
	String encode(CharSequence rawPassword);
	/**
	 * 这个方法是使用登录输入的密码和用户真正的使用的密码进行匹配
	 */
	boolean matches(CharSequence rawPassword, String encodedPassword);

}

Spring Security 自定义认证步骤

我的环境

  • SpringBoot 2.0.8
  • Spring Security 5.0.11
  • JDK 1.8
  • Eclipse 4.11.0
  • Maven 3.5.4
  • Windows 10

项目结构

项目结构截图

项目pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>cn.com.witsystem</groupId>
	<artifactId>security</artifactId>
	<version</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值