Spring SecurityとOAuth 20(2)


スプリングの安全性を以前の位置に適用しました.
画面にログインボタンを作成するにはindexを使用します.ひげに次の内容を追加します.
index.mustache
		...
        
 <div class="col-md-6">
            <a href="/posts/save" role="button" class="btn btn-primary">글 등록</a>
            {{#userName}}
                Logged in as: <span id="user">{{userName}}</span>
                <a href="/logout" class="btn btn-info active" role="button">Logout</a>
            {{/userName}}
            {{^userName}}
                <a href="/oauth2/authorization/google" class="btn btn-success active" role="button">Google Login</a>
                <a href="/oauth2/authorization/naver" class="btn btn-secondary active" role="button">Naver Login</a>
            {{/userName}}
        </div>
        
        ...
  • {{#userName}} {{^userName}}-Musturchはifをサポートしていないため、最終値(真/偽)を渡す必要があります.
    -userNameが存在する場合、userNameが露出します.
    -存在しない場合は、ログインボタンが露出します.
  • a href="/logout" a href="/oauth2/authorization/google""-Spring Securityによって提供されるログイン/urlのログアウト.
    -したがって、個別の/logoutコントローラを作成する必要はありません.
  • テスト用のuserNameをコントローラからモデルとして保存するコードを作成します.
     private final PostsService postsService;
        private final HttpSession httpSession;
    
        @GetMapping("/")
        public String index(Model model){
            model.addAttribute("posts", postsService.findAllDesc());
            
            SessionUser user = (SessionUser) httpSession.getAttribute("user");
            // 로그인 성공 시 세션 값
            
            if (user != null) {
                model.addAttribute("userName", user.getName());
            }
            return "index";
        }
    ログインに成功すると、セッションに格納されたユーザー情報がモデルに保存されます.
    セッションに値が格納されていない場合、ログインボタンはユーザーも存在しないため露出されます.

    ログインする前に、Googleログインボタンは次のように表示されます.
    上の図に示すように、ボタンをクリックして「Googleログイン」画面に移動します.

    ログインに成功すると、Googleアカウントに登録されている名前が画面に表示されます.

    Deviでuserテーブルのメンバー情報を表示できます.

    認証権限


    上のh 2コンソールでは、現在ログインしているユーザの権限はGUIである.
    この権限は記事を作成できません.そのため、次の403権限拒否エラーが発生します.
    パーミッションをUSERに変更し、記事を作成することで、記事の登録が成功することを確認できます.