注意: 登录的时候是一个POST的请求
1、在配置类中在重写一个方法,在方法中进行配置
代码:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
//路径规则符合这样的要有什么样的角色,还有hasAnyRole()
.antMatchers("/admin/**").hasRole("admin")
// .antMatchers("user/**").hasAnyRole("admin","user")
.antMatchers("/user/**").access("hasAnyRole('user','admin')")//另一种写法
.anyRequest().authenticated()//剩下的所有请求登录后就能访问
.and()
//表单登录 处理登录请求的地址
.formLogin()
.loginProcessingUrl("/doLogin")
.permitAll() //跟登录相关的接口直接就能过
.and()
.csrf().disable();//关闭csrf攻击
}
2、添加几个接口进行测试
代码:
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(){
return "hello spring security";
}
@GetMapping("/admin/hello")
public String admin(){
return "hello admin";
}
@GetMapping("/user/hello")
public String user(){
return "hello user";
}
3、进行测试
- 这时有点路径只能有权限才能够访问,如
http://localhost:8080/admin/hello - 要角色是admin才能够访问,而tqq1的角色是user,故当tqq1的用户访问此路径的时候就会报403(没有权限)的错误