質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Spring Security

Spring Securityは、Springのサブプロジェクトの一つでWebアプリケーションに必要な機能を追加します。正規ユーザーであるかを確認するための「認証機能」と、ユーザーのアクセスを制御する「認可機能」を簡単に追加することが可能です。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

2108閲覧

spring security ログイン認証でformの値を3つ送信したい

mk222222

総合スコア59

Spring Security

Spring Securityは、Springのサブプロジェクトの一つでWebアプリケーションに必要な機能を追加します。正規ユーザーであるかを確認するための「認証機能」と、ユーザーのアクセスを制御する「認可機能」を簡単に追加することが可能です。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2018/10/23 00:48

編集2018/10/23 08:52

表題について

ログイン画面からparameterを3つ送りたいのです
・ユーザコード
・パスワード
・+α

しかしsecurityのデフォルトは2つのparameterしか受け取れないです。
カスタマイズできるっぽいのですが、やり方がわかりません。
わかる方、よろしくお願いいたします。

securityのjavaConfig

protected void configure(HttpSecurity http) throws Exception { // ログイン処理 http.authorizeRequests() .antMatchers("/js/**","css/**").permitAll() .antMatchers("/**").authenticated() .and().formLogin() .loginPage("/login") .usernameParameter("username") .passwordParameter("password")     //ここでもう1つのパラメータを受け取りたい .failureUrl("/login").permitAll(); }

ログイン画面

<form th:action="@{/login}" method="post"> <table> <tr> <td></td> <td><input type="text" name="car"></td>//こいつもsessionに格納したい </tr> <tr> <td>ユーザーコード</td> <td><input type="text" name="username" /></td> </tr> <tr> <td>パスワード</td> <td><input type="password" name="password" /></td> </tr> </table> <br /><br /> <button type="submit">ログイン</button> </form>

追記
下記ベストアンサーを参考に実装してみたのですが
nullというエラーが出ました。
デバッグしてauthRequestああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああーめん

public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException { if (!request.getMethod().equals("POST")) { throw new AuthenticationServiceException("Authentication method not supported: " + request.getMethod()); } // Obtain UserName, Password, CompanyId String username = super.obtainUsername(request); String password = super.obtainPassword(request); String carNo = obtainCarNo(request); request.setAttribute("carNo", carNo); // username required if (!StringUtils.hasText(username)) { throw new AuthenticationServiceException("UserName is required"); } // validate password, companyId // omitted other process CarNoUsernamePasswordAuthenticationToken authRequest = new CarNoUsernamePasswordAuthenticationToken(username, password, carNo); // Allow subclasses to set the "details" property setDetails(request, authRequest); return this.getAuthenticationManager().authenticate(authRequest); // ここでnull }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yeondev

2018/10/23 01:15

ログイン画面のソースも見せてください。
guest

回答1

0

ベストアンサー

最近この質問出杉だよなぁ・・

6.3.3.2. AuthenticationProviderの拡張

投稿2018/10/23 03:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mk222222

2018/10/23 04:58

おお!神リフッァレンスありがとうございます!!参考にします!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問