目录
认证授权注解使用
@Secured:判断是否具有角色,另外需要注意的是这里匹配的字符串需要添加前缀“ROLE_“。
1)启动类开启注解
2)在controller方法上使用这个注解
@GetMapping("update")
@Secured({"ROLE_root","ROLE_admin"})
public String update() {
return "hello update";
}
3)userDetailService给用户设置角色
List<GrantedAuthority> authorities = AuthorityUtils.commaSeparatedStringToAuthorityList("root,ROLE_admin");
@PreAuthorize:注解适合进入方法前的权限验证, @PreAuthorize 可以将登录用
户的 roles/permissions 参数传到方法中。
1)开启注解
2)在controller方法上面加上注解
@GetMapping("add")
@PreAuthorize("hasAnyAuthority('add')")
public String add() {
return "hello add";
}
3)userDetailService给用户设置角色
List<GrantedAuthority> authorities = AuthorityUtils.commaSeparatedStringToAuthorityList("add,ROLE_admin");
@PostAuthorize:注解使用并不多,在方法执行后再进行权限验证,适合验证带有返回值
的权限.
@PostFilter :权限验证之后对数据进行过滤
@PreFilter: 进入控制器之前对数据进行过滤
用户注销
1)在配置类加上退出的配置
2)测试
a)修改配置类,登录成功之后跳转到成功的页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
登录成功!!
<a href="/logout">退出</a>
</body>
</html>
b)在成功页面添加超链接,设置退出的路径
c)登录成功之后,在成功页面点击退出,再去访问其他controller,是不能访问的(需要认证)