Thymeleafの sec:authorize 内で変数にアクセスする


ThymeleafでSpring Securityの機能を使用できる thymeleaf-extras-springsecurity を使っていて、sec:authorize 内で変数の参照に手間取ったのでメモ。

READMEにめっちゃ書いてありました。#vars オブジェクト(コンテキスト変数オブジェクト)を経由することで、変数にアクセスできます。

As with normal Spring EL expressions, Thymeleaf allows you to access a series of objects from them including the context variables map (the #vars object). In fact, you are allowed to surround your access expression with ${...} if it makes you feel more comfortable:

1
2
3
<div sec:authorize="${hasRole(#vars.expectedRole)}">
  This will only be displayed if authenticated user has a role computed by the controller.
</div>

thymeleaf-extras-springsecurity

なるほど。