shiro no ir después de método de registro doGetAuthorizationInfo
En el estudio shiro + cas de inicio de sesión de autenticación de proceso, construir un buen ambiente después del tiempo de solicitud de descubrimiento no ha ido doGetAuthorizationInfo este método, pero todavía está configurado para preguntar, que no entendía shiro
-
doGetAuthenticationInfo
entrará en el método de autenticación de inicio de sesión -
doGetAuthorizationInfo
entrará este método cuando se necesita autorización
soluciones
JSP
Agregue el código siguiente en JSP
<shiro:hasRole name="admin"></shiro:hasRole>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户</title>
</head>
<body>
<h1>${user.username }</h1>
<shiro:hasRole name="admin"></shiro:hasRole>
<h1>user</h1>
</body>
</html>
comentario
Cuando se agrega el acceso a la interfaz, puede utilizar las anotaciones
configuración xml shiro añadió
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"></bean>
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
depends-on="lifecycleBeanPostProcessor" />
Completa de primavera-shiro.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
">
<!-- Shiro Filter -->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"/>
<!-- 设定用户的登录链接,这里为cas登录页面的链接地址可配置回调地址 -->
<property name="loginUrl" value="${shiro.loginUrl}"/>
<property name="filters">
<map>
<!-- 添加casFilter到shiroFilter -->
<entry key="casFilter" value-ref="casFilter"/>
<entry key="logoutFilter" value-ref="logoutFilter"/>
</map>
</property>
<property name="filterChainDefinitions">
<value>
/shiro-cas = casFilter
/logout = logoutFilter
/page/** = authc
</value>
</property>
</bean>
<bean id="casFilter" class="org.apache.shiro.cas.CasFilter">
<!-- 配置验证错误时的失败页面 -->
<property name="failureUrl" value="${shiro.failureUrl}"/>
<!-- 成功页面-->
<property name="successUrl" value="${shiro.successUrl}"/>
</bean>
<bean id="logoutFilter" class="org.apache.shiro.web.filter.authc.LogoutFilter">
<!-- 配置验证错误时的失败页面 -->
<property name="redirectUrl" value="${shiro.logoutUrl}"/>
</bean>
<bean id="casRealm" class="com.spring.mybatis.realm.UserRealm">
<!-- 认证通过后的默认角色 -->
<property name="defaultRoles" value="ROLE_USER"/>
<!-- cas服务端地址前缀 -->
<property name="casServerUrlPrefix" value="${shiro.cas.serverUrlPrefix}"/>
<!-- 应用服务地址,用来接收cas服务端票据 需要和service=?后面的路径一致-->
<property name="casService" value="${shiro.cas.service}"/>
</bean>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<!-- <property name="sessionManager" ref="sessionManager" /> -->
<property name="subjectFactory" ref="casSubjectFactory"></property>
<property name="realm" ref="casRealm"/>
</bean>
<bean id="casSubjectFactory" class="org.apache.shiro.cas.CasSubjectFactory"></bean>
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
depends-on="lifecycleBeanPostProcessor"/>
<bean
class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager"/>
</bean>
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"></bean>
<bean
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="staticMethod"
value="org.apache.shiro.SecurityUtils.setSecurityManager"></property>
<property name="arguments" ref="securityManager"></property>
</bean>
</beans>
código de prueba de Java
@RequiresRoles
acceder a esta interfaz requiere rol de administrador
@RequiresRoles("admin")
@RequestMapping("/role")
public String role(){
return "111";
}
Autoridad Notas shiro
comentario | significado |
---|---|
RequiresAuthentication | Utilice el comentario clases de anotación, casos, métodos, al acceder o llamando al tema actual deben haber sido certificados en la sesión actual |
RequiresGuest | Utilizar el comentario de anotación clases, instancias, los métodos, al acceder o llamando al actual sujeto puede ser el estado de "ráfaga", que no requiere certificación o existen registros en la sesión anterior. |
RequiresPermissions | Cuando la corriente de Asunto necesidad de tener ciertos permisos para realizar el ser método etiquetado notas. Si la corriente del sujeto no tiene permiso para hacerlo, entonces no se ejecutará el método. |
RequiresRoles | Cuando la corriente de Asunto debe tener todas las funciones asignadas a las notas del método de acceso indexado. Si usted no tiene tanto el mismo día, con todo el papel especificado, el método no AuthorizationException lanzará una excepción. |
RequiresUser | Sujeto debe ser un usuario actual de la aplicación se puede acceder o una llamada marcada la clase de anotación, ejemplo, método. |