03、Spring Security 实战 - 注解方式配置权限
前言
在前面已经介绍了通过内存方式配置用户,我们接着上一节继续介绍通过权限配置。
权限配置
添加用户
在上一节的基础上,我们再添加一个用户名为admin,密码123,权限admin的用户。
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user")
.password(passwordEncoder().encode("123"))
.authorities("user");
auth.inMemoryAuthentication()
.withUser("admin")
.password(passwordEncoder().encode("123"))
.authorities("admin");
}
代码很简单一目了然,不做过多解释。
访问权限
还是在SpringSecurityConfig类中添加EnableGlobalMethodSecurity(prePostEnabled = true)注解
添加接口
之前在一、初体验中创建过Controller了,这里只需要在此基础上添加以下代码。
@GetMapping("user")
@PreAuthorize("hasAuthority('user')")
public String user(){
return "user";
}
@GetMapping("admin")
@PreAuthorize("hasAuthority('admin')")
public String admin(){
return "admin";
}
/user需要有user权限;/admin需要有admin权限
这里准备工作都已经准备好了,启动项目,进行验证
权限验证
在浏览器中访问http://localhost:8080/会自动跳转到登录页面。
验证user用户
通过user用户登录,浏览器打印index。继续访问http://localhost:8080/user接口,浏览器成功打印出user。
继续访问http://localhost:8080/admin接口,返回403,代表没有权限。
退出
通过http://localhost:8080/logout将user用户退出。
验证admin用户
通过admin用户登录,浏览器打印index。
继续访问http://localhost:8080/admin接口,浏览器成功打印出admin。
继续访问http://localhost:8080/user接口,返回403,代表没有权限。
做到这里,说明注解方式配置权限已经完成。