SpringSecurity(安全)
shiro,SpringSecurity;常用的两个安全框架;包括认证、授权,拦截器和过滤器也可以完成框架的功能,但它使用大量的原生代码,比较繁琐复杂,所以安全框架应运而生。
相对于 Shiro,在 SSM/SSH 中整合 Spring Security 都是比较麻烦的操作,所以,Spring Security 虽然功能比 Shiro 强大,但是使用反而没有 Shiro 多(Shiro 虽然功能没有 Spring Security 多,但是对于大部分项目而言,Shiro 也够用了)。
自从有了 Spring Boot 之后,Spring Boot 对于 Spring Security 提供了 自动化配置方案,可以零配置使用 Spring Security。
记住几个类:
-
WebSecurityConfigurerAdapter:自定义Security策略
-
AuthenticationManagerBuilder:自定义认证策略
-
@EnableWebSecurity:开启WebSecurity模式
Spring Secuity的两个主要目标是“认证”和“授权”(访问控制)。
“认证”(Authentication)
"授权"(Authorization)
1.引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2.配置文件
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
//定制首页
http.formLogin().loginPage("/toLogin");
//记住我
http.rememberMe().rememberMeParameter("remember");
从数据库中读取数据进行认证详见Spring Secuity官方文档 5.6.2 JDBC Authentication
注销与权限控制
可以根据用户的角色实现动态菜单的功能,不同角色用户登录显示的内容不一样