案例:
@GetMapping("/vip/test") @Secured("ROLE_VIP") // 需要ROLE_VIP权限可访问 public String vipPath() { return "仅 ROLE_VIP 可看"; } @GetMapping("/vip") public boolean updateToVIP() { // 得到当前的认证信息 Authentication auth = SecurityContextHolder.getContext().getAuthentication(); // 生成当前的所有授权 List<GrantedAuthority> updatedAuthorities = new ArrayList<>(auth.getAuthorities()); // 添加 ROLE_VIP 授权 updatedAuthorities.add(new SimpleGrantedAuthority("ROLE_VIP")); // 生成新的认证信息 Authentication newAuth = new UsernamePasswordAuthenticationToken(auth.getPrincipal(), auth.getCredentials(), updatedAuthorities); // 重置认证信息 SecurityContextHolder.getContext().setAuthentication(newAuth); return true; }备注:Spring Security默认是禁用注解的,要想开启注解, 需要在继承WebSecurityConfigurerAdapter的类上加@EnableGlobalMethodSecurity注解, 来判断用户对某个控制层的方法是否具有访问权限