@PerAuthorize用作授权的使用方法

@PerAuthorizr 这个注解我相信很多不使用SpringSecurity的小伙伴都不是很了解。
使用他的初衷是最近需要做一个对授权的客户做判断,让他买了哪些模块的代码才能使用哪些模块的代码,需要进行一波模块过滤。
@PreAuthorize是可以用来控制一个方法或类是否能够被调用的,通俗一点就是看看你有没有权利用被注解的东西。怎么用呢?直接上代码吧。

    /**
     * 获取部门列表
     */
    @PreAuthorize("@ac.hasPermi('dept:list')")
    @GetMapping("/list")
    public AjaxResult list(SysDept dept) {
        List<SysDept> depts = deptService.selectDeptList(dept);
        return AjaxResult.success(depts);
    }

这里@PreAuthorize("@ac.hasPermi(‘dept:list’)")是调用别名为ac类的hasPermi方法。

    /**
     * 根据授权文件获取接口权限
     */
    public boolean hasPermi(String permission) {
        log.debug(" 当前模块:{} 当前权限:{} ", permission, AuthorizationConfig.isAccess() && authorizationConfig.getMk().indexOf(permission) >= 0);
        return AuthorizationConfig.isAccess() && authorizationConfig.getMk().indexOf(permission) >= 0;
    }

我这里就简单写一下供大家参考。
判断结果返回true则正常调用接口,false则接口返回403。

加在类头上依然有效,上代码:

/**
 * 部门信息
 */
@RestController
@PreAuthorize("@ac.hasPermi('mk')")
@RequestMapping("/system/dept")
public class SysDeptController extends BaseController {
    
    @Autowired
    private ISysDeptService deptService;
    ...
}

放了类头上会在每次调用改类方法的时候都会进行一次判断。

这样授权给用户的功能实现了,但是一个用户登录过之后,每次请求接口都要进行一次权限判断,这显然不合理,所以我想加上一个给每个用户本次登录判断完权限有之后加一个标识。这个写好了就更新~

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Java中,@PreAuthorize是一个注解,它可以用于控制一个方法或类是否能够被调用。简单来说,它用于判断用户是否具有权限使用被注解的方法或类。它通常与Spring Security一起使用,用于实现授权功能。 @PreAuthorize注解的使用方式是在方法或类上加上注解,并传入一个表达式作为参数,该表达式定义了访问控制规则。在示例代码中,@PreAuthorize("@ac.hasPermi('dept:list')")表示只有具有'dept:list'权限的用户才能调用被注解的方法。 具体来说,它会调用名为ac的类的hasPermi方法,并将'dept:list'作为参数传入。在hasPermi方法中,会根据授权文件中的权限配置进行判断,如果当前用户具有'dept:list'权限,则返回true,否则返回false。 这样,通过在方法或类上加上@PreAuthorize注解,并定义相应的授权规则,可以在运行时对用户的访问权限进行验证,从而实现对敏感操作的保护和控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java课程设计抽奖系统](https://download.csdn.net/download/qq_20660115/88233419)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [@PerAuthorize用作授权使用方法](https://blog.csdn.net/qq_42507357/article/details/107997549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值