Springboot集成Spring Security
1、Spring Security简介
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。
(百度百科)
2、引入依赖
在pom文件加入如下代码:
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
3、创建数据库并实现根据id查找
角色表
用户表
关联表
业务实现的方法(这里省略了Dao和业务接口)
//根据id找角色实体
@Override
public AyRole find(String id) {
return ayRoleRepository.findById(id).get();
}
//根据用户id找角色关联的实体列表
@Override
public List<AyUserRoleRel> findByUserId(String userId) {
return ayUserRoleRelRepository.findByUserId(userId);
}
//根据名字找用户
@Override
public AyUser findByName(String name) {
return ayUserDao.findByName(name);
}
4、实现UserDetailsService接口
用CustomUserService类实现UserDetailsService接口
注意:给定角色名称要加上ROLE_前缀,不然会识别不出
代码如下:
import com.example.demojpa.error.BusinessException;
import com.example.demojpa.model.AyUser;
import com.example.demojpa.model.AyUserRoleRel;
import com.example.demojpa.service.AyRoleService;
import com.example.demojpa.service.AyUserRoleRelService;
import com.example.demojpa.service.AyUserService;
import org.apache.logging