Spring Security 第一节 简单的使用

◇◆丶佛笑我妖孽 提交于 2020-07-24 00:02:39

security 配置类

@EnableWebSecurity// 启用Sucerity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

	
	@Override
	protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests() //方法有很多子方法,每个子匹配器将会按照声明的顺序起作用。
		.antMatchers("/user/h1/**").permitAll() // antMatchers 指定资源路径,permitAll 放行,不进行拦截。
//		.antMatchers( "/role/**").hasRole("role") //role 资源必须使用role角色才能访问
//		 .antMatchers( "/db/**").access("hasRole('ADMIN') and hasRole('DBA')")  //同时满足两个角色才可以访问
		.anyRequest().authenticated();//其余所有情况需要认证才可以访问
	}
	
}

测试控制器

@RestController
@RequestMapping("/user")
public class AuthUserController extends BaseController {

	@RequestMapping("/h1")
	public String h1(){
		return "user h1";
	}
	
	@RequestMapping("/h2")
	public String h2(){
		return "user h2";
	}
}

测试

启动后,只有user/h1控制器可以访问,其他都不能进行访问。

登陆表单

http.formLogin(); 启用表单,则访问需要没有权限的资源则跳转到登陆页面。

解决跨域问题

//第1步:解决跨域问题。cors 预检请求放行,让Spring security 放行所有preflight request(cors 预检请求) http.authorizeRequests().requestMatchers(CorsUtils::isPreFlightRequest).permitAll();

不创建session

    //第2步:让Security永远不会创建HttpSession,它不会使用HttpSession来获取SecurityContext
    http.csrf().disable().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and().headers().cacheControl();
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!