voltron tutorial significado naruto cascos anime shiro

tutorial - apache shiro permitiendo que mĂșltiples roles accedan a una url que no funciona



shiro significado (2)

En lugar de

/guest/** = user, roles[admin,guest]

probar

/guest/** = user, roles[admin],roles[guest]

Tengo un proyecto web simple. Quiero tener acceso a más de un rol en este proyecto es una URL.

sección sihor.ini de la url

[urls] /login.xhtml = authc /logout = logout /admin/** = user, roles[admin] /guest/** = user, roles[admin,guest]

Recibo un error 401 cuando la función de un administrador de usuarios visita el directorio de invitados.

¿Por qué?

Shiro versión 1.2.1


Hay otra opción: la implementación personalizada del filtro de roles mediante OR para el conjunto de roles proporcionado en lugar de AND .

import org.apache.shiro.subject.Subject; import org.apache.shiro.web.filter.authz.RolesAuthorizationFilter; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import java.io.IOException; /** * Allows access if current user has at least one role of the specified list. * * Basically, it''s the same as {@link RolesAuthorizationFilter} but using {@literal OR} instead * of {@literal AND} on the specified roles. * * @see RolesAuthorizationFilter * @author Andy Belsky */ public class AnyOfRolesAuthorizationFilter extends RolesAuthorizationFilter { @Override public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws IOException { final Subject subject = getSubject(request, response); final String[] rolesArray = (String[]) mappedValue; if (rolesArray == null || rolesArray.length == 0) { //no roles specified, so nothing to check - allow access. return true; } for (String roleName : rolesArray) { if (subject.hasRole(roleName)) { return true; } } return false; } }

El uso en shiro.ini es así:

[main] ... anyofroles = com.your.package.AnyOfRolesAuthorizationFilter [urls] ... /path/to/some/url = anyofroles["role1,role2"]