shiro登录认证后不执行授权doGetAuthorizationInfo的解决

本文介绍了一种在Shiro框架中,使用户登录成功后立即执行授权的方法。通常,Shiro在用户登录后不会立即执行授权,而是在访问受保护资源时才进行。为满足特定需求,文中提供了解决方案,通过在页面上增加特定代码,触发doGetAuthorizationInfo,确保登录后即时完成授权。

shiro登录认证后不执行授权doGetAuthorizationInfo的解决

shiro认证和授权

用户登录成功之后,完成shiro的doGetAuthenticationInfo认证,但是登录认证之后shiro并不会马上执行授权doGetAuthorizationInfo,而是待用户访问的目标资源或者方法需要权限的时候才会调用doGetAuthorizationInfo进行授权。

认证之后马上执行授权

因为项目需要,在shiro登录认证之后需要马上执行doGetAuthorizationInfo进行授权,后来在网上找了大量的方法均为实现或者实现效果不理想,通过在登录认证成功之后跳转首页controller下对应方法加@RequiresRoles(“admin”)或者@RequiresPermissions(“system”)会出现由于登录用户没有admin角色或者system权限时无法执行doGetAuthorizationInfo导致授权失败

解决方案

在页面增加如下代码

var flag = [[${@permission.hasPermi('system')}]];


由于springboot项目页面采用Thymeleaf模板引擎,通过页面调用java判断是否有当前请求资源即首页的权限是否有,无需接收返回值即可触发doGetAuthorizationInfo验证当前资源权限是否有。故在页面引入此行代码即可解决shiro登录认证后即刻执行授权方法的问题。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn565973850

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值