SpringBoot Thymeleaf авторизация безопасности - PullRequest
0 голосов
/ 08 февраля 2019

У меня проблема с sec :: authorize, она не работает.Я перепробовал почти все.

Это пример из моего проекта:

 <div sec:authorize="isAuthenticated()">
      <form action="logmeout" th:action="@{/logmeout}" method="post" id="form1"></form>
        <button type="submit" form="form1" value="Submit">Wyloguj</button>
         </div>

        <div sec:authorize="isAnonymous()">
        <form action="logmeout" th:action="@{/logmeout}" method="post" id="form2"></form>
        <button type="submit" form="form2" value="Submit">Zaloguj</button>
         </div>

Сек: авторизация всегда верна и все формы видны.

Мой файл pom:

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>

    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
     </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>



     <dependency>
    <groupId>nz.net.ultraq.thymeleaf</groupId>
    <artifactId>thymeleaf-layout-dialect</artifactId>
    </dependency>



   <dependency>
    <groupId>org.thymeleaf.extras</groupId>
    <artifactId>thymeleaf-extras-springsecurity3</artifactId>
    <version>2.1.2.RELEASE</version>
</dependency>




<dependency>
  <groupId>com.opencsv</groupId>
  <artifactId>opencsv</artifactId>
  <version>4.4</version>
</dependency>

    </dependencies>

    <build>
    <finalName>springApp</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

И SecurityConfig:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {





    @Bean
    public PasswordEncoder passwordEncoder() {
        PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
        return passwordEncoder;
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
           String[] staticResources  =  {
                    "/css/**",
                    "/img/**",
                    "/fonts/**",
                    "/scripts/**",
                };

        http
        .authorizeRequests()
        .antMatchers(staticResources).permitAll()   
        .antMatchers("/").permitAll()
            .antMatchers("/register").permitAll()
             .anyRequest().authenticated()
        .and()
           .formLogin()
           .loginPage("/loginform")
               .permitAll()
           .loginProcessingUrl("/processlogin")
               .permitAll()
           .usernameParameter("user")
           .passwordParameter("pass")
           .and()
       .logout()
           .logoutUrl("/logmeout")
               .logoutSuccessUrl("/logoutservice")
               .permitAll();
    }

}

Когда я пытаюсь добавить:

<<code>div th:text="${#authentication.name}">

Я вижу исключение ошибки при оценке выражения SpringEL: "# authentication.name",Как я могу справиться с этим?

1 Ответ

0 голосов
/ 08 февраля 2019

Большинство этих случаев связаны с вашими зависимостями и связанными версиями .Я предполагаю, что yor spring-boot version равно 2.1.X , тогда вы должны использовать следующую зависимость:

<dependency>
    <groupId>org.thymeleaf.extras</groupId>
    <artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>

Это также отмечено в этом ТАК вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...