Spring Security详细学习第二篇(授权,异常处理,跨域)

本文详细介绍了在SpringSecurity中如何从数据库获取RBAC权限信息,使用注解实现基于角色的权限控制,处理认证和授权过程中的异常,以及解决跨域问题的策略,包括CORS配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

授权

权限系统可以使得不同的用户可以使用不同的功能
所以我们需要在后端进行相应的权限判断,判断当前用户是否具有相应的权限,必须基于所需权限才能进行相应的操作

  • 授权原理

在SpringSecurity中,会使用默认的FilterSecurityInterceptor来进行权限校验,在FilterSecurityInterceptor中会从securityContextHolder获取其中的Authentication,然后获取其中的权限信息,当前用户是否拥有访问当前资源所需的权限

框架提供了基于注解的权限控制的方案:
开启权限注解的相关配置:

@EnableGlobalMathodSecurity(prePostEnabled= true)

注解放在所继承WebSecurityConfigurerAdapter的配置类上
然后可以使用对应的权限注解

@RestController
public class HelloController{
   
   
   @RequestMapping("/hello")
   @PreAuthorize("hasAuthority('test')")
   public String hello(){
   
   
       return "hello";
   }
}

注解中的hasAuthority是一个方法,在进行判断的时候根据注解中传入的参数进行方法来进行判断

我们需要对UserDetails中完善授权信息部分:
在实现UserDetails的实现类中由方法getAuthorities()来返回控制权限的信息

public class userdatails implements UserDetails{
   
   
     private List<String> primissions;
     @JSONField(serialize=false)
     private List<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值