List of usage examples for org.apache.shiro.subject Subject runAs
void runAs(PrincipalCollection principals) throws NullPointerException, IllegalStateException;
From source file:com.wegas.core.security.rest.UserController.java
License:MIT License
/** * See like an other user specified by it's jpaAccount id. Administrators * only.//from w ww .ja va2 s. c o m * * @param accountId jpaAccount id */ @POST @Path("Be/{accountId: [1-9][0-9]*}") public void runAs(@PathParam("accountId") Long accountId) { Subject oSubject = SecurityUtils.getSubject(); if (oSubject.isRunAs()) { oSubject.releaseRunAs(); //@TODO: check shiro version > 1.2.1 (SHIRO-380) } oSubject.checkRole("Administrator"); SimplePrincipalCollection subject = new SimplePrincipalCollection(accountId, "jpaRealm"); oSubject.runAs(subject); }
From source file:org.fcrepo.auth.common.AbstractPrincipalProvider.java
License:Apache License
@Override public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException { final HttpServletRequest hsRequest = (HttpServletRequest) request; final Subject currentUser = SecurityUtils.getSubject(); PrincipalCollection principals = currentUser.getPrincipals(); final Set<Principal> newPrincipals = getPrincipals(hsRequest); if (newPrincipals.size() > 0) { final Set<Principal> currentPrincipals; if (principals == null || principals.asList().isEmpty()) { log.debug("Shiro Principal object is not found!"); currentPrincipals = newPrincipals; } else {/*from ww w . j ava 2 s .c o m*/ currentPrincipals = new HashSet<>((Set<Principal>) principals.asSet()); log.debug("Number of Principals already in session object: {}", currentPrincipals.size()); currentPrincipals.addAll(newPrincipals); } log.debug("Number of Principals after processing the current request: {}", currentPrincipals.size()); principals = new SimplePrincipalCollection(currentPrincipals, REALM_NAME); currentUser.runAs(principals); } else { log.debug("New Principals not found in the request!"); } chain.doFilter(request, response); }