[ https://issues.apache.org/jira/browse/SHIRO-380?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Les Hazlewood closed SHIRO-380. ------------------------------- > runAs feature (still) doesn't work > ---------------------------------- > > Key: SHIRO-380 > URL: https://issues.apache.org/jira/browse/SHIRO-380 > Project: Shiro > Issue Type: Bug > Components: Realms > Affects Versions: 1.2.1 > Reporter: Jochen Munz > Assignee: Les Hazlewood > Labels: principal,, shiro,, subject > Fix For: 1.2.2, 1.3.0 > > Attachments: SHIRO-380-patch1.diff, shiro_380_webapp.tgz > > > Right after SecurityUtils.getSubject().runAs(new new > SimplePrincipalCollection(){...}) > SecurityUtils.getSubject().getPrincipal() returns correct new Principal > SecurityUtils.getSubject()..getPreviousPrincipals() returns correct original > Principal > but DefaultSubjectDAO merge principals in method > protected void mergePrincipals(Subject subject) { > PrincipalCollection currentPrincipals = subject.getPrincipals(); > ... > if (session == null) { > ... > } else { > PrincipalCollection existingPrincipals = (PrincipalCollection) > session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY); > if (CollectionUtils.isEmpty(currentPrincipals)) { > ... > } else { > if (!currentPrincipals.equals(existingPrincipals)) { > > session.setAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY, > currentPrincipals); > } > } > } > and after that > SecurityUtils.getSubject().getPrincipal() and > SecurityUtils.getSubject().getPreviousPrincipals() both returns new Principal > - this is wrong behavior -- This message was sent by Atlassian JIRA (v6.3.4#6332)