因為要保存一些用戶名之外的內容在shiro中,所以創建了一個ShiroUser的類,當用戶修改了某些屬性后,如何動態保存到shiro中:
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)
思路就是重建一個PrincipalCollection,以它來運行