2015-08-31 57 views
0

我試圖使用彈簧安全taglib,在3.2.8.RELEASE版本此代碼工作正常,但與4.0.2.RELEASE版本不起作用,
doesn 「T渲染秒:授權標籤內容,並得到了用戶的角​​色超級管理員:秒:授權不工作在春季安全4

<sec:authorize access="hasRole('SUPER_ADMIN')"> 
       <div class="form-group"> 
        <label class="col-md-4 control-label" for="inptAdmin" >Usuário responsável:</label> 
        <div class="col-md-8"> 
         ... 
         </select> 
        </div> 
       </div> 
      </sec:authorize> 

我的Spring配置: 春季版:4.1.7.RELEASE,春季安全:4.0.2.RELEASE

WEB.xml:

<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 

<display-name>Expenses Manager</display-name> 

<!-- Creates the Spring Container shared by all Servlets and Filters --> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/spring/spring-context.xml 
     /WEB-INF/spring/spring-security.xml 
    </param-value> 
</context-param> 


    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 


<filter> 
    <filter-name>encoding-filter</filter-name> 
    <filter-class> 
     org.springframework.web.filter.CharacterEncodingFilter 
    </filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
    <param-name>forceEncoding</param-name> 
    <param-value>true</param-value> 
    </init-param> 
</filter> 

<filter-mapping> 
    <filter-name>encoding-filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 


<!-- Processes application requests --> 
<servlet> 
    <servlet-name>DispatcherServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/spring-servlet.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>DispatcherServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

彈簧上下文:

<context:annotation-config /> 
<context:component-scan base-package="br.com.edubarbieri.comerbem.dao" /> 
<context:component-scan base-package="br.com.edubarbieri.comerbem.configuration" /> 
<context:component-scan base-package="br.com.edubarbieri.comerbem.service" /> 


<jee:jndi-lookup id="mysqlDS" jndi-name="java:comp/env/jdbc/MySQLDS" /> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="mysqlDS" /> 
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory"></property> 
</bean> 
<tx:annotation-driven /> 



<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean"> 
    <property name="velocityProperties"> 
     <props> 
      <prop key="resource.loader">file</prop> 
      <prop key="file.resource.loader.class"> 
       org.apache.velocity.runtime.resource.loader.FileResourceLoader 
      </prop> 
      <prop key="file.resource.loader.path">C:/Users/eduardo.santos/Documents/Comerbem/admin/src/main/webapp/WEB-INF/templates</prop> 
      <prop key="file.resource.loader.cache">false</prop> 
     </props> 
    </property> 
</bean> 

<bean id="appProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
    <property name="locations" > 
     <list> 
      <value>classpath:app.properties</value>   
      <value>classpath:app#{systemProperties['ENV']}.properties</value>   
     </list>   
    </property> 
</bean> 

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <!-- setting maximum upload size 5mb --> 
    <property name="maxUploadSize" value="5242880" /> 
</bean> 

彈簧安全:

<security:global-method-security secured-annotations="enabled" pre-post-annotations="enabled" /> 
<security:debug/> 

<security:http auto-config="true" use-expressions="true" disable-url-rewriting="false" > 
    <security:headers disabled="true"/> 
    <security:csrf disabled="true" /> 

    <security:form-login authentication-failure-url="/acesso?error" 
     login-page="/acesso" default-target-url="/" username-parameter="email" 
     password-parameter="password" login-processing-url="/do_login" /> 
    <security:logout logout-success-url="/acesso?logout" logout-url="/do_logout" invalidate-session="true" /> 

    <security:intercept-url pattern="/login/**" access="permitAll" /> 
    <security:intercept-url pattern="/acesso*" access="permitAll" /> 
    <security:intercept-url pattern="/favicon.ico" access="permitAll" /> 
    <security:intercept-url pattern="/*" access="isAuthenticated()" /> 


    <!-- <security:intercept-url pattern="/post/publicar/**" access="hasRole('ROLE_MEMBRO')"/> --> 


</security:http> 

<bean id="exAuthenticationProvider" autowire="byType" class="br.com.edubarbieri.comerbem.security.ExAutenticationProvider" /> 


<security:authentication-manager> 
    <security:authentication-provider ref="exAuthenticationProvider" /> 
</security:authentication-manager> 

彈簧的servlet:

<!-- DispatcherServlet Context: defines this servlet's request-processing 
    infrastructure --> 

<!-- Enables the Spring MVC @Controller programming model --> 
<annotation-driven /> 

<!-- Handles HTTP GET requests for /resources/** by efficiently serving 
    up static resources in the ${webappRoot}/resources directory --> 
<resources mapping="/favicon.ico" location="/favicon.ico" /> 
<resources mapping="/images/**" location="/images/" /> 
<resources mapping="/login/**" location="/login/" /> 
<resources mapping="/dist/**" location="/dist/" /> 
<resources mapping="/bower_components/**" location="/bower_components/" /> 
<resources mapping="/scripts/**" location="/scripts/" /> 
<resources mapping="/styles/**" location="/styles/" /> 

<!-- Resolves views selected for rendering by @Controllers to .jsp resources 
    in the /WEB-INF/views directory --> 
<beans:bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <!-- <beans:property name="prefix" value="/views/" /> --> 
    <beans:property name="suffix" value=".jsp" /> 
</beans:bean> 



<context:component-scan base-package="br.com.edubarbieri.comerbem.api" /> 
<context:component-scan base-package="br.com.edubarbieri.comerbem.controller" /> 

我也沒有辦法解決這個問題,誰能幫助我?

UPDATE:

我的pom.xml

<project> 
<modelVersion>4.0.0</modelVersion> 
<groupId>br.com</groupId> 
<artifactId>edubarbieri</artifactId> 
<name>admin</name> 
<packaging>war</packaging> 
<version>1.0.0-SNAPSHOT</version> 
<properties> 
    <java-version>1.7</java-version> 
    <spring.versao>4.1.7.RELEASE</spring.versao> 
    <spring.security.versao>4.0.2.RELEASE</spring.security.versao> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
<dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring.versao}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>${spring.versao}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${spring.versao}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>${spring.versao}</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>javax.mail-api</artifactId> 
     <version>1.5.4</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.mail</groupId> 
     <artifactId>javax.mail</artifactId> 
     <version>1.5.4</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>${spring.versao}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>1.8.4</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjweaver</artifactId> 
     <version>1.8.4</version> 
    </dependency> 
    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib</artifactId> 
     <version>3.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>5.1.3.Final</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>slf4j-api</artifactId> 
       <groupId>org.slf4j</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 


    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.7.10</version> 
    </dependency> 

    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>commons-fileupload</groupId> 
     <artifactId>commons-fileupload</artifactId> 
     <version>1.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.4</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.4.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.4.1.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-core-asl</artifactId> 
     <version>1.9.13</version> 
    </dependency> 
    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-mapper-asl</artifactId> 
     <version>1.9.13</version> 
    </dependency> 

    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-jaxrs</artifactId> 
     <version>1.9.13</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.8.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.34</version> 
    </dependency> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8.1</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-core</artifactId> 
     <version>${spring.security.versao}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>${spring.security.versao}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>${spring.security.versao}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-taglibs</artifactId> 
     <version>${spring.security.versao}</version> 

    </dependency> 

    <dependency> 
     <groupId>commons-codec</groupId> 
     <artifactId>commons-codec</artifactId> 
     <version>1.10</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.15</version> 
     <exclusions> 
      <exclusion> 
       <groupId>javax.mail</groupId> 
       <artifactId>mail</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>javax.jms</groupId> 
       <artifactId>jms</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jdmk</groupId> 
       <artifactId>jmxtools</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jmx</groupId> 
       <artifactId>jmxri</artifactId> 
      </exclusion> 
     </exclusions> 
     <scope>runtime</scope> 
    </dependency> 

    <dependency> 
     <groupId>javax.inject</groupId> 
     <artifactId>javax.inject</artifactId> 
     <version>1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.4</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.velocity</groupId> 
     <artifactId>velocity</artifactId> 
     <version>1.7</version> 
    </dependency> 

    <dependency> 
     <groupId>ro.isdc.wro4j</groupId> 
     <artifactId>wro4j-core</artifactId> 
     <version>1.7.8</version> 
    </dependency> 

    <dependency> 
     <groupId>ro.isdc.wro4j</groupId> 
     <artifactId>wro4j-extensions</artifactId> 
     <version>1.7.8</version> 
    </dependency> 
    <dependency> 
     <groupId>org.imgscalr</groupId> 
     <artifactId>imgscalr-lib</artifactId> 
     <version>4.2</version> 
    </dependency> 

</dependencies> 
<build> 
    <finalName>expenses</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.2</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

的解決方案:

...

在Spring Security 4,hasRole默認preffix 'ROLE_' 先加:

http://docs.spring.io/spring-security/site/docs/4.0.2.RELEASE/reference/htmlsingle/#el-common-built-in

+0

解釋什麼是 「不工作」,具體是指。 – chrylis

+0

不會呈現sec:authorize標記內容,並且用戶具有角色SUPER_ADMIN。 –

+0

測試安全4.0.0 RELEASE與春天4.0.0 RELEASE和它的工作正常;可能與你正在使用的版本有關,但應該沒問題。 – Asura

回答

1

你需要Spring Security的標籤庫在類路徑中。對於Maven的:

<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-taglibs</artifactId> 
    <version>${spring.security.version}</version> 
</dependency> 

您需要的taglib添加到JSP:

<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %> 
+0

坦克你的答覆,但我做到了。 –