SpringSecurity核心功能
- 用户认证(Authentication):验证某个用户是否为系统中的某个合法主体,即用户能否访问该系统。
- 用户授权(Authorization):验证用户是否有权限执行某个操作。
入门案例
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
写一个controller
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/getUserList")
public String getUserList(){
return "hello,security";
}
}
输入url:http://localhost:8080/user/getUserList
用户名默认为:user
密码随机生成,在控制台可以看到:
输入用户名和密码后:
UserDetailsService
当什么也没有配置的时候,账号和密码是由SpringSecurity生成的。而在实际项目中,账号和密码都是从数据库中查询出来的。
所以我们要通过自定义逻辑控制认证逻辑,需要实现UserDetailsService接口来查询数据库获取用户信息。
UserDetailsService 接口:
public interface UserDetailsService {
/**
* 根据用户名找到用户。在实际的实现中,搜索可能区分大小写,或者不区分大小写,具体取决于实现实例的配置方式。
* 在这种情况下,返回的对象的用户名可能与实际请求的不同
*/
UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}
UserDetails 接口:
public interface UserDetails extends Serializable {
/**
* 返回授予用户的权限。
*/
Collection<? extends