0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Spring Security備忘録2

Last updated at Posted at 2023-06-20

20220503

bcrypt
lombok
セキュリティ設定
antMatcher("/").permitAll()…一項目で指定したパスに関してすべてのアクセスを許可
anyRequest().authenticated()…↑以外のすべてのアクセスを制御する
defaultSuccessUrl("/
")…ログイン成功後、/に遷移する
logoutRequestMatcher(new AntPathRequestMatcher("/
")…ログアウト後遷移画面のURLを/**にする
userDetailsのフィールド名はgetterにしたがう。(getUsername->username)

〇userDetailsService実装クラスで、クライアントからリクエストされたユーザ情報について

DBから情報探して、userDetails実装クラスに格納する。実際にユーザ情報を探してくるのはloadUserByUsernameメソッド
ちなみにuserDetails内に格納されたデータをモデル化するuserクラスは実装不要?
DaoAuthenticationProviderは自動的に実装されるとのことだったのでこいつも?

〇RequiredArgsConstructor

Lombokアノテーション?
コンストラクタにfinalフィールドを自動セット

〇発生エラー

DBアクセス権限の拒否
【対応策】
・コマンドプロンプトにてアクセスユーザーの削除、再作成
・application.propertiesにてjdbcドライバーの記述を追加
・MapperのXML記法からLombokのアノテーション記法へ変更

シンタックスエラー
【対応策】
・INSERT文の末尾に;追加

DBの抽出データ重複
【対応策】
・CREATE文の前にDROP TABLE文記述してTABLEを初期化
これについては、DBのアクセス回数の増加等、改善の余地あり(別の書き方)

〇GetMappingとRequestMappingの挙動について

ログイン後画面についてGetMappingによるセキュリティ有画面遷移がうまく作動しなかった
→RequestMappingに変更したところ正常作動確認。

20220504

〇そもそも論、XML記法同様、MapperにLombokのアノテーション付与してSqlべた書きでServiceで呼び出せば使えるんじゃ?

MapperにSerectアノテーションからのSQL文記述でデータ抽出可能
さらに抽出したデータをList形式で格納し、コントローラでビューに渡して、th:eachで回すと
いつも通り表示させれる。

〇schemaに書いたCREATE TABLEについて

新たにTABLE作成したい場合は随時書き足していく感じ?
セキュリティを効かせる必要のないTABLEはコマンドプロンプトべた書きでよい?

〇GetMapping→PostMappingではURLの認識がなされず。。。

むしろGetMappingで認証成功!
RequestMappingにおけるmethod=RequestMethod.GETなので当然RequestMappingでも動く

〇schema.sqlでユーザ、パスワード以外の要素を追加。以下に対応できるような要素を追加。

1.簡単な計算をさせる
2.取得した日付を表示(加工も?)


2.登録した日付を表示することに成功。
気づきとして、いままでXMLとMapperで抽出したデータをドメインパッケージクラスのInfoに格納する
際にInfoのフィールドはDBと同等のフィールド名を記述しておけば問題なかった。
しかしLombokアノテーション記法でsqlをXMLを使わずMapperに直接記述する方法では、
フィールド名とDBのカラム名を100%一致させる必要がある模様。
特にDBのカラムは一般的にアンダーバーを使用するためフィールド名&Getter等の命名に注意。
フィールド名にアンダーバー使用するのは違和感があるけど個人開発の面では特に気にする必要はない?
アンダーバー使用の違和感とXMLとmybatisの設定記述の手間を考慮するとLombokのが楽。

20220505

〇login中のユーザー情報を取得するには、Authenticationクラスのgetter?を使用

getName
getPassword
など

〇configでのLogout実装

logout()またはlogoutUrl("任意のURL")を定義すると、
/logoutまたは/任意のURLがマッピングされた段階で自動でログアウト。
ボタン押下での画面遷移を実装したい場合は、ボタンsubmitでth:formactionでマッピングさせたいURLを定義する

例)Controller -> @RequestMappig(value="list",params="regist")
Themeleah ->

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?