文章目录
什么是 SpringSesurity ?
在我们的开发中,安全还是有些必要的
用 拦截器 和 过滤器 写代码还是比较麻烦。
SpringSecurity
是SpringBoot
的底层安全默认选型。一般我们需要认证和授权,这也是它的核心功能。我们仅仅需要导入spring-boot-starter-security
模块,进行少量的配置,即可实现强大的安全管理
认证:验证当前访问系统的用户 是不是本系统的用户,并且要具体哪一个用户
授权:经过认证后判断当前用户是否有权限进行某个操作
细节
登录过程
负责我们在登录页面填写的用户和密码登录的请求,入门案例主要由他负责。
使用方法
总结到代码之中。
// 开启 web 安全
@EnableWebSecurity
public class springSecurityConfig extends WebSecurityConfigurerAdapter { // 然后我们继承 web安全配置 适配器
// 链式编程
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests(). // authorize 授权
antMatchers("/").permitAll() // ant ==> 蚂蚁 matcher ==> 匹配器 permitAll ==> 允许所有
.antMatchers("/test1/**").hasRole("vip1") // role角色
.antMatchers("/test2/**").hasRole("vip2")
.antMatchers("/test3/**").hasRole("vip3");
// 如果没有用户的情况下,则会跳转到 login 页面 // 登录加工的url
http.formLogin().loginPage("/toLogin").usernameParameter("name").passwordParameter("pwd").loginProcessingUrl("/Login");
// http.formLogin()
// .loginPage("/toLogin") // 设置登录页面URL
// .loginProcessingUrl("/Login") // 设置表单提交的URL 个人感觉:应该是需要认证的模块
// .failureUrl("/login-error") // 登录失败后的重定向URL
// .defaultSuccessUrl("/home", true) // 登录成功后的默认重定向URL
// .and()
// .logout()
// .logoutSuccessUrl("/"); // 注销成功后的重定向URL
// 开启记住我功能
http.rememberMe().rememberMeParameter("jiZhuWo");
http.csrf().disable(); // 关闭脚本跨站攻击
// 开启注销功能
http.logout().logoutSuccessUrl("/index"); // 注销成功后,回到 "/index" 之中。
}
// 认证
@Override // 最新版本需要密码加密
protected void configure(AuthenticationManagerBuilder auth) throws Exception { // Authentication 认证 Manager 管理者
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()) // Memory 记忆
.withUser("xj").password(new BCryptPasswordEncoder().encode("abc")).roles("vip1","vip2") // memory ==> 记忆
.and()
.withUser("test").password(new BCryptPasswordEncoder().encode("cba")).roles("vip3");
}
}
我们可以看到,拥有这个功能,不仅提供了权限、安全等,还另外 省去了写登录后台、过滤器等大量繁杂的代码,十分的方便