開始行: * キーワード [#t07885df] - Spring Boot - HandlerInterceptor - アスペクト - 共通処理 * したいこと [#hef25949] ログインユーザーのパスワードが有効期限切れのとき、パスワ... ただし、UserDetails#isCredentialsNotExpired()は使わない。... * どうやって [#v68925e3] HandlerInterceptorでアスペクト処理する。 @Component public class PasswordResetHandlerInterceptor extends Han... @Autowired private LoggedInUserLoadService loggedInUserLoadService; @Override public boolean preHandle(HttpServletRequest request, Htt... Authentication authentication = (Authentication) reques... boolean isPasswordExpired = Optional.ofNullable(authentication) .map(a -> a.getPrincipal()) .filter(p -> p instanceof UserDetails) .map(p -> (LoggedInUser) p) .map(u -> loggedInUserService.loadUserByUsername(u.getU... .map(u -> u.isPasswordExpired()) // isCredentialsNotExp... .orElse(false); if (isPasswordExpired) // リダイレクト処理 return ! isPasswordExpired; } } これを登録する。 @Configuration public class WebMvcConfig extends WebMvcConfigurerAdapte... @Autowired PasswordResetHandlerInterceptor passwordResetInterceptor; @Override public void addInterceptors(InterceptorRegistry registr... registry.addInterceptor(passwordResetInterceptor); } } * ノート [#a500a29c] 次に手こずった。 - HttpServletRequestからログインユーザーを引っこ抜く - HandlerInterceptorを登録する - UserDetailsがどうも更新できない -- ので毎リクエストでDBからユーザーを取得するようにした --- 何かいい方法ないの?? --- パスワードリセットしたらログアウトさせるっていうのが... * 参考 [#a9e5a0ab] - [[java - spring boot adding http request interceptors -... - [[Spring MVC(+Spring Boot)上でのリクエスト共通処理の実... - [[6.10. 代表的なセキュリティ要件の実装例 — TERASO... - [[Spring Boot/特定のログインエラーで画面遷移する]] 終了行: * キーワード [#t07885df] - Spring Boot - HandlerInterceptor - アスペクト - 共通処理 * したいこと [#hef25949] ログインユーザーのパスワードが有効期限切れのとき、パスワ... ただし、UserDetails#isCredentialsNotExpired()は使わない。... * どうやって [#v68925e3] HandlerInterceptorでアスペクト処理する。 @Component public class PasswordResetHandlerInterceptor extends Han... @Autowired private LoggedInUserLoadService loggedInUserLoadService; @Override public boolean preHandle(HttpServletRequest request, Htt... Authentication authentication = (Authentication) reques... boolean isPasswordExpired = Optional.ofNullable(authentication) .map(a -> a.getPrincipal()) .filter(p -> p instanceof UserDetails) .map(p -> (LoggedInUser) p) .map(u -> loggedInUserService.loadUserByUsername(u.getU... .map(u -> u.isPasswordExpired()) // isCredentialsNotExp... .orElse(false); if (isPasswordExpired) // リダイレクト処理 return ! isPasswordExpired; } } これを登録する。 @Configuration public class WebMvcConfig extends WebMvcConfigurerAdapte... @Autowired PasswordResetHandlerInterceptor passwordResetInterceptor; @Override public void addInterceptors(InterceptorRegistry registr... registry.addInterceptor(passwordResetInterceptor); } } * ノート [#a500a29c] 次に手こずった。 - HttpServletRequestからログインユーザーを引っこ抜く - HandlerInterceptorを登録する - UserDetailsがどうも更新できない -- ので毎リクエストでDBからユーザーを取得するようにした --- 何かいい方法ないの?? --- パスワードリセットしたらログアウトさせるっていうのが... * 参考 [#a9e5a0ab] - [[java - spring boot adding http request interceptors -... - [[Spring MVC(+Spring Boot)上でのリクエスト共通処理の実... - [[6.10. 代表的なセキュリティ要件の実装例 — TERASO... - [[Spring Boot/特定のログインエラーで画面遷移する]] ページ名: