shiro no ir después de método de registro doGetAuthorizationInfo

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.
发布了83 篇原创文章 · 获赞 21 · 访问量 5万+

Supongo que te gusta

Origin blog.csdn.net/JsongNeu/article/details/104295245
Recomendado
Clasificación