2017-01-17 3 views
3

私は初めてSpring Bootを使用してウェブサイトを作成しています。私は、ユーザーがログインした後、ユーザーがログインしたとき、言葉は、「認証」は、画面に表示されるようにすることを示すために、テストページを使用しています。thymeleaf-extras-springsecurityタグを解析するためにSpringブートを取得するにはどうすればよいですか?

<!DOCTYPE html> 
<html xmlns:th="http://www.thymeleaf.org" 
     xmlns:sec="http://www.thymeleaf.org/extras/spring-security"> 
<head> 
    <meta charset="utf-8"/> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/> 
    <meta name="viewport" content="width=device-width, initial-scale=1"/> 
</head> 
<body> 
<h2>Thymleaf example</h2> 
<p sec:authorize="hasRole('ROLE_USER')"> 
    Authenticated 
</p> 
</body> 
</html> 

は、問題があることと、タグsec:authorizeは未編集かつ未解析のままです。その結果、ユーザーがログインしているかどうかにかかわらず、認証された単語が表示されます。コントローラーからユーザーの権限を印刷すると、これが確認されます。

私のpom.xmlファイルには次の依存関係があります。

助けてください。 私はSpringブートを使用しているので、JAVA設定はXML設定より優先されます。

答えて

1

あなた@Configuration(または@SpringBootApplication)クラスに次のコードのようなものを追加してみてください:あなたはThymeleafバージョン3を使用するように春ブーツを強制している場合、あなたはまた、バージョンを強制的に持っていることを

@Bean 
public SpringTemplateEngine templateEngine(ITemplateResolver templateResolver, SpringSecurityDialect sec) { 
    final SpringTemplateEngine templateEngine = new SpringTemplateEngine(); 
    templateEngine.setTemplateResolver(templateResolver); 
    templateEngine.addDialect(sec); // Enable use of "sec" 
    return templateEngine; 
} 

注意thymeleaf-extras-springsecurity4依存の3:

<dependency> 
    <groupId>org.thymeleaf.extras</groupId> 
    <artifactId>thymeleaf-extras-springsecurity4</artifactId> 
    <version>3.0.1.RELEASE</version> 
</dependency> 

this related answerを参照してください。

+0

addDialect関数でエラーが発生しました。 'java.lang.NoClassDefFoundErrorのスレッドでの例外 "メイン":java.lang.ClassNotFoundExceptionが:ORG/thymeleaf /方言/ IExpressionEnhancingDialect' と は'によって引き起こさorg.thymeleaf.dialect.IExpressionEnhancingDialect' – needoriginalname

+0

Thymeleafのバージョンは、あなたがしていますを使用して?あなたのクラスパスにthymeleaf瓶がないようです!あなたのpom.xmlに以下の行を持っていることを確認すると、あなたのMavenプロジェクト掃除してください: \t \t ' \t \t \t org.springframework.bootを \t \t \t 春ブート・スターター・thymeleaf \t \t

+1

タイメレフのバージョン3.0.2で、タイメレフのレイアウトの方言は2.1.1です。あなたが入力した依存関係タグは既に入っています。私が作業しているサイトの他の部分は "th"接頭辞をうまく使っています。それは、問題になっているthymeleaf-extra-springsecurityタグのようです。 ここに、pom.xmlファイル全体を表示するためのペーストビンがあります。http://pastebin.com/TpteH3X4 – needoriginalname

0

1)java.lang.ClassNotFoundException: org.thymeleaf.dom.Attribute Exeptionを解決するには、タグ内のprom.xmlファイルに以下を追加してください。

<thymeleaf-layout-dialect.version>2.2.1</thymeleaf-layout-dialect.version> 

2)は、前回の記事で述べた追加WebSecurityConfigurerAdapter

@Bean 
public SpringTemplateEngine templateEngine(ITemplateResolver templateResolver, SpringSecurityDialect sec) { 
    final SpringTemplateEngine templateEngine = new SpringTemplateEngine(); 
    templateEngine.setTemplateResolver(templateResolver); 
    templateEngine.addDialect(sec); // Enable use of "sec" 
    return templateEngine; 
} 

3を拡張し、あなたのWebSecurityConfigクラスに以下のBeanを追加します)、次の依存関係を追加し、バージョンについては注意してください、あなたは強制する必要があります3.0.1.RELEASEバージョン

<dependency> 
    <groupId>org.thymeleaf.extras</groupId> 
    <artifactId>thymeleaf-extras-springsecurity4</artifactId> 
    <version>3.0.1.RELEASE</version> 
</dependency> 
関連する問題