因为要保存一些用户名之外的内容在shiro中,所以创建了一个ShiroUser的类,当用户修改了某些属性后,如何动态保存到shiro中:
思路就是重建一个PrincipalCollection,以它来运行Subject subject = SecurityUtils.getSubject(); ShiroUser shiroUser = (ShiroUser)subject.getPrincipal(); PrincipalCollection principalCollection = subject.getPrincipals(); //修改属性 shiroUser.setUsername("123"); String realmName = principalCollection.getRealmNames().iterator().next(); PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(shiroUser, realmName); //重新加载Principal subject.runAs(newPrincipalCollection)