security作为一个安全框架,肯定对项目中各个接口配置了不同的权限,保证不同权限的用户调用不同的接口。
具体怎么能够实现呢?
第一步:创建一个配置类继承WebSecurityConfigurerAdapter
第二步:重写configure(AuthenticationManagerBuilder auth)方法
第三步:在内存中增加user、password、roles
/**
* 在内存中配置用户和密码
*/
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("wy").password("asd").roles("admin")
.and()
.withUser("lz").password("lz").roles("user");
}
等等,还没完!!!
密码加密处理
security框架在设置密码时,会把输入的密码经过加盐加密的方式处理再校验。
也可以用不加密的方式
说了半天,终于来到了本片文章的重点,给不同的url配置权限
第四步:配置HttpSecurity
重写configure(HttpSecurity http)
步骤
1.给指定的url分配权限
2.剩下的所有请求,只要登录认证之后就可以访问
3.login请求不用拦截
/**
* 配置url访问权限
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
//开启配置
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("admin")
.antMatchers("/user/**").hasAnyRole("user")
//剩下的所有请求,只要认证后的都可以访问
.anyRequest().authenticated()
.and()
//登录请求全部放开,不需要认证
.formLogin()
.loginProcessingUrl("/login")
.permitAll();//全部放开,不需要认证
}