Sec авторизовать это не работает на весенней безопасности

Я пытаюсь интегрировать свой проект SpringMVC и Thymeleaf с Spring Security. Я обнаружил, что это обычный вопрос, но я попробовал решения, и у меня никто не работает.

Я добавил в свою конфигурацию класс org.thymeleaf.spring4.SpringTemplateEngine, но это не сработало.

Spring-security.xml

<beans:beans xmlns = "http://www.springframework.org/schema/security"
    xmlns:beans = "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-3.0.xsd
    http://www.springframework.org/schema/security
    http://www.springframework.org/schema/security/spring-security-4.2.xsd">


<http auto-config = "true" use-expressions = "true">  
    <intercept-url pattern = "/admin**" access = "hasRole('ROLE_ADMIN')" />
</http>


    <authentication-manager>  
      <authentication-provider>  
        <user-service>  
        <user name = "usuario" password = "123456" authorities = "ROLE_USER" />  
        </user-service>  
        <password-encoder ref = "passwordEncoder" />
      </authentication-provider>  
    </authentication-manager>  

<beans:bean id  = "passwordEncoder" 
class = "org.springframework.security.crypto.password.NoOpPasswordEncoder" factory-method = "getInstance" />

<beans:bean id = "templateEngine" class = "org.thymeleaf.spring4.SpringTemplateEngine">
  <beans:property name = "additionalDialects">
    <beans:set>
      <beans:bean class = "org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect"/>
    </beans:set>
  </beans:property>
</beans:bean>

</beans:beans>

Страница:

<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:th = "http://www.thymeleaf.org"
xmlns:sec = "http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">


<head>      
    <title>Home</title>

</head>

<body

    <div sec:authorize = "hasRole('ROLE_USER')">Text visible to user.</div>
    <div sec:authorize = "hasRole('ROLE_ADMIN')">Text visible to admin.</div>
        <div sec:authorize = "isAuthenticated()">
            Text visible only to authenticated users.
        </div>
        <h4>Spring security.</h4>

</body>

</html>

pom.xml

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>5.0.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>5.0.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.thymeleaf.extras</groupId>
        <artifactId>thymeleaf-extras-springsecurity4</artifactId>
        <version>3.0.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>5.0.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
    <version>3.0.9.RELEASE</version>
</dependency>
    <dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring4</artifactId>
    <version>3.0.9.RELEASE</version>
</dependency>

Он показывает весь этот контент пользователям, прежде чем вы войдете в него. Не могли бы вы мне помочь пожалуйста?

Вы пробовали эту версию тимелеафа-extras-springsecurity5?

Adina Rolea 17.10.2018 20:09

Я не могу, потому что в моем проекте есть версия Spring 4.3.

Jane C. 17.10.2018 20:49
0
2
1 246
2

Ответы 2

Вы пробовали использовать hasAuthority вместо hasRole?

sec:authorize = "hasAuthority('ADMIN')"

Похоже, что hasRole не работает для Spring 4.

Это вопрос версии.

Страница:

xmlns:sec = "http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"
        :
<div sec:authorize = "hasAuthority('ROLE_USER')">..</div>

pom.xml

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring5</artifactId>
    <version>3.0.11.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.thymeleaf.extras</groupId>
    <artifactId>thymeleaf-extras-springsecurity5</artifactId>
    <version>3.0.4.RELEASE</version>
</dependency>

Другие вопросы по теме