近期做的那个项目购买之后需要刷新权限,这个之前没做过,通过查看http://jinnianshilongnian.iteye.com/blog/2044616与http://jinnianshilongnian.iteye.com/blog/2044616找到了动态刷新权限的方式,加入我的项目如下进行权限修改:
RealmSecurityManager rsm = (RealmSecurityManager) SecurityUtils.getSecurityManager();
//AccountAuthorizationRealm为在项目中定义的realm类
AccountAuthorizationRealm shiroRealm = (AccountAuthorizationRealm)rsm.getRealms().iterator().next();
Subject subject = SecurityUtils.getSubject();
String realmName = subject.getPrincipals().getRealmNames().iterator().next();
SimplePrincipalCollection principals = new SimplePrincipalCollection(principal,realmName);
subject.runAs(principals);
//用realm删除principle
shiroRealm.getAuthorizationCache().remove(subject.getPrincipals());
//切换身份也就是刷新了
subject.releaseRunAs();