一,springsecurity 概述
Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。
二,第一个springsecurity 项目
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
自定义用户名和密码
继承WebSecurityConfigurerAdapter,重写configure() 方法,完成自定义用户名和密码
security 提供两种方式自定义用户名和密码
第一种:inMemoryAuthentication()(不推荐,不用)
第二种:userDetailsService()
1:自定义类去实现 UserDetailsService 接口,重写loadUserByUsername(String username)//username:页面传过来过来账号
2:根据username查数据库,是否存在
用户自定义登录页面(非前后端分离项目)
重configure() 方法
注意的点:1:配地址前面加/ 2:配loginProcessingUrl,对应fom 表单的action 的地址
http.formLogin() //告诉框架自定义页面
.loginPage("/login.html") //登录页面地址
.loginProcessingUrl("/dologin") //对应表单提交的action
.permitAll(); //对login.html 和 /doloign 放行
http.authorizeRequests()
.anyRequest().authenticated(); //所有请求都拦截
//跨站脚本攻击关掉
http.csrf().disable();
授权(鉴权)
给系统接口绑定一个权限,判断用户是否拥有该接口指定的权限
.antMatchers("/hello").hasAuthority("stu:query")
.antMatchers("/hello").permitAll() //配置免登录方式
注解式鉴权开发
1:开启注解式开发 加@EnableGlobalMethodSecurity 注解
2:security 提供三套方式注解,但是默认都是关闭的,使用时要打开
3:把注解加上请求方法上
4:常用注解方式 @PreAuthorize(“hasAuthority(‘stu:query’)”)
三,完整的springsecurity 配置流程
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
整个项目已经是一个安全项目,访问接口都登录
怎么自定义用户名和密码?
继承一个类(WebSecurityConfigurerAdapter) 重写,重写configure(AuthenticationManagerBuilder auth) 方法,
auth.userDetailsService()就可以自定义用户名和密码。具体写法,写一个类继承 UserDetailsService 接口,重写loadUserByUsername方法,根据页面穿过来的用户名,去数据查,判断是否有该用户信息。
怎么自定义用户登录页面?(前提条件:不是一个前后端分离项目)
重写configure(HttpSecurity http)
http.formLogin() //告诉框架自定义页面
.loginPage("/login.html") //登录页面地址
.loginProcessingUrl("/dologin") //对应表单提交的action
.permitAll(); //对login.html 和 /doloign 放行
http.authorizeRequests()
//授权写的地方
.anyRequest().authenticated(); //所有请求都拦截
//跨站脚本攻击关掉
http.csrf().disable();
//配置前后端分离项目几个处理器。