2015-11-25 55 views
0

我試圖使用Spring Boot,Spring Security 4,Thymeleaf和sec:authorize屬性在用戶登錄時能夠顯示註銷按鈕,註冊並在沒有用戶登錄時登錄。現在,註銷和登錄按鈕都顯示以及註銷按鈕。這是我到目前爲止在我的html中所擁有的。Spring Security 4 w/Thymeleaf sec:授權不工作

這是在我的html頁面的頂部。

 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" 
    xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> 
    <head> 
     <title>Welcome to Quizbanks</title> 
     <!-- Bootstrap Css --> 
     <link href="css/bootstrap.css" rel="stylesheet"></link> 
     <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
     <!-- Include all compiled plugins (below), or include individual files as needed --> 
     <script src="js/bootstrap.js"></script> 
    </head> 

這是我的列表,我嘗試使用sec:authorize屬性在不同時間顯示註銷和登錄按鈕。

 <ul sec:authorize="isAnonymous()" class="nav navbar-nav navbar-right"> 
      <li><a th:href="@{/login}">Login </a></li> 
      <li><a th:href="@{/register}">Sign Up</a></li> 
     </ul> 
     <ul sec:authorize="isAuthenticated()" class="nav navbar-nav navbar-right" > 
      <li> 
       <a th:href="@{/logout}">Log out</a> 
      </li> 
     </ul> 

而且,這裏是我的pom.xml,

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.example</groupId> 
<artifactId>demo</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>QuizbanksBootProject</name> 
<description>Demo project for Spring Boot</description> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.2.7.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <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-jdbc</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-remote-shell</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-el</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.apache.directory.server</groupId> 
     <artifactId>apacheds-server-jndi</artifactId> 
    <version>1.5.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-el</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-core</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.7.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-search-orm</artifactId> 
     <version>4.5.1.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-rest</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>javax.inject</groupId> 
     <artifactId>javax.inject</artifactId> 
     <version>1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.hateoas</groupId> 
     <artifactId>spring-hateoas</artifactId> 
    </dependency> 
     <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>springloaded</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.thymeleaf</groupId> 
     <artifactId>thymeleaf-spring4</artifactId> 
     </dependency> 


    </dependencies> 


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

     </plugins> 
    </build> 

    <repositories> 
    <repository> 
     <id>spring-releases</id> 
     <name>Spring Releases</name> 
     <url>https://repo.spring.io/libs-release</url> 
    </repository> 
</repositories> 

<pluginRepositories> 
    <pluginRepository> 
     <id>spring-releases</id> 
     <name>Spring Releases</name> 
     <url>https://repo.spring.io/libs-release</url> 
    </pluginRepository> 
</pluginRepositories> 

如果任何人都可以看到我要去哪裏錯了,並指出我在正確的方向,這將是真棒。此外,如果還有其他事情需要告訴大家,看看問題出在哪裏,讓我知道。提前致謝。

+0

嘗試解釋的例子:[http://forum.thymeleaf.org/Spring-Security-Integration- issue-tp4025441p4025510.html](http://forum.thymeleaf.org/Spring-Security-Integration-issue-tp4025441p4025510.html) – Valijon

+0

可能的解決方案:http://stackoverflow.com/questions/32904857/secauthorize-returning-true -for-both-isauthenticated-and-isanonymous-in-thy/40492335#40492335 – bpgriner

回答

4

我想通了,我的問題,所有我需要做的是加入到我的pom.xml

<dependency> 
     <groupId>org.thymeleaf.extras</groupId> 
     <artifactId>thymeleaf-extras-springsecurity3</artifactId> 
    </dependency> 
+0

您不需要聲明xml命名空間:只需在您的配置中註冊一個bean – thomi

+0

我遇到了similer問題,但無法解決加入百里香特級溫泉ecurity4 3.0.2.RELEASE \t \t 3.0.0.RELEASE 2.2 .2 5.0.1.RELEASE 4.2.3.RELEASE – user3029929