Spring Boot/認証/スクラッチ/HelloWorld/100_ユーザー情報を Thymeleaf 側から読む

Spring Boot/認証/スクラッチ/HelloWorld/100_ユーザー情報を Thymeleaf 側から読む

Prev

Read AuthUser Value on Thymeleaf template

ユーザー情報というのは画面表示として常に使うことになるとは思うのだが、 これを毎度 Model に添付するのは面倒なのでそれは暗黙で呼べるようにしておきたい。

Bean で Spring 管理になっているモノは Thymeleaf 側から @名前 で参照可能になっている。

確認のため AuthUser を拡張してこのようにする。

名前を付け加える

@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class AuthUser {
    private boolean loginFlg = false;
    private String name = "";
 
    public boolean isLoginFlg() {
        return loginFlg;
    }
 
    public void setLoginFlg(boolean loginFlg) {
        this.loginFlg = loginFlg;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}

ログインできたと想定して名前を入れる。

@Controller
@RequestMapping("/login")
public class LoginController extends BaseController{
    @RequestMapping("")
    @NoAuth
    public String index() {
        return "login/index";
    }
    @RequestMapping("/doLogin")
    @NoAuth
    public String doLogin() {
        this.refreshSession();
        authUser.setLoginFlg(true);
        authUser.setName("Yamada");
        return "redirect:/hoge";
    }
    @RequestMapping("/doLogout")
    @NoAuth
    public String doLogout() {
        this.refreshSession();        
        authUser.setLoginFlg(false);
        return "redirect:/login";
    }
}

AuthUser は Spring 管理で Scope は Session になっているので Thymeleaf 側からこのように呼び出せる。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
        <title>hoge</title>
        <meta name="description" content="">
        <link rel="stylesheet" type="text/css" href="/css/hoge/index.css" />
    </head>
    <body>
        <h1>hoge</h1>
        [[${@authUser.name}]] <!-- This! -->
        <ul>
            <li><a href="/piyo">piyo</a></li>
            <li><a href="/login/doLogout">logout</a></li>
        </ul> 
    </body>
</html>

ログイン後に Yamada が表示されていることがわかる。

Next

java/spring/spring_boot/auth/scratch/helloworld/100_read_user_info_thymeleaf.txt · 最終更新: 2019-06-28 11:09 by ore