/**
* @title 刷新用户权限
* @param principal
* @desc principal为用户的认证信息
*/
public static void reloadAuthorizing(Object principal) throws Exception{
RealmSecurityManager rsm = (RealmSecurityManager) SecurityUtils.getSecurityManager();
MyShiroRealm myShiroRealm = (MyShiroRealm) rsm.getRealms().iterator().next();
Subject subject = SecurityUtils.getSubject();
String realmName = subject.getPrincipals().getRealmNames().iterator().next();
SimplePrincipalCollection principals = new SimplePrincipalCollection(principal, realmName);
subject.runAs(principals);
if(myShiroRealm.isAuthenticationCachingEnabled()) {
myShiroRealm.getAuthenticationCache().remove(principals);
}
if(myShiroRealm.isAuthorizationCachingEnabled()) {
// 删除指定用户shiro权限
myShiroRealm.getAuthorizationCache().remove(principals);
}
// 刷新权限
subject.releaseRunAs();
}
shiro刷新权限
最新推荐文章于 2024-11-05 08:08:40 发布
该代码段展示了如何在Java中使用Shiro框架刷新用户权限。它首先通过SecurityUtils获取RealmSecurityManager,然后从Realm集合中获取MyShiroRealm实例。接着,它获取当前Subject并使用SimplePrincipalCollection更新其认证信息。如果认证和授权缓存启用,将清除相关缓存,从而实现权限的刷新。最后,释放RunAs身份。
1304

被折叠的 条评论
为什么被折叠?



