前提・実現したいこと
あるページへのURLを直接入力した場合に、
ユーザがログインしていない場合は一旦ログイン画面を経由するようになっていますが、
そのログイン画面を表示する際に直接入力されたURLやパラメータを受け取る方法はありますでしょうか?
入力したURL
...../hogehoge/any_page/?param_a=123
表示されるログイン画面のURL
...../hogehoge/login
ログインコントローラ
java
1@Controller 2public class LoginController { 3 @RequestMapping(value = "/login", method = RequestMethod.GET) 4 public String login(@RequestParam(name = "param_a", required = false) String paramA, Model model) { 5 //ここで param_a や 123 といったquerystringに関する値が欲しい 6 return "login"; 7 } 8}
Security の設定
java
1public static class LoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter { 2 @Override 3 protected void configure(HttpSecurity http) throws Exception { 4 //ログインに関する設定 5 http.formLogin() 6 .loginProcessingUrl("/login/auth") 7 .loginPage("/login") 8 .successHandler(successHandler) 9 .failureHandler(failureHandler) 10 ; 11 } 12}
標準で戻るようになってると思うが
戻るというのは、ログイン後にURLが元に戻るといったような状態でしょうか?
もしそちらの意味でしたら問題はないのですが、
「ログイン画面を表示時」に「入力されたURLを知りたい」のです。
要件をもう少し詳しく教えて頂きたいのですが、
(1) 下記は認証が必要なページであり
```
http://localhost/hogehoge/any_page/?param_a=123
```
(2) ユーザが未認証の状態で、たとえばブックマークから(1)のページに直接アクセスした場合
(3) リダイレクトされたログインページ(/login)のハンドラメソッド(LoginController#login)で、(1)のクエリストリングを知りたい
(4) 補足すると、認証成功後は (1)のページへリダイレクトする。
ということでしょうか?
はい、その通りです。
どんなURLにアクセスしたかで、
ログイン画面を表示する際にいくつか表示の分岐を行いたいのです。
回答1件
あなたの回答
tips
プレビュー