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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

1465閲覧

ログイン日時を最新のものに更新する際に前回ログイン日時を取得する理由について

ikesan

総合スコア2

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/12/02 01:39

現在私は、ソースコードリディングを行っているのですが、このコードを使用すればログイン時に最新のものが更新されるということは確認できました。
しかし、「//現在のログインユーザの前回のログイン時間を取得」の部分のコードについて、何故今回の新しいログイン日時を更新するために必要なのかという部分まで理解することが出来ませんでした。
このコードを記述する理由を教えていただきたいです。

* ログイン成功時の処理 */ @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { var targetUrl = ""; // DateTimeFormatterクラスを使用して日付オブジェクトの作成 DateTimeFormatter localDatetimeFormat = DateTimeFormatter.ofPattern("yyyy/MM/dd"); //現在のログインユーザのログイン履歴のリスト List<TLoginHistoryCustom> searchTLoginHistoryByLoginUser = tLoginHistoryService.search("", ((CustomerUserDetails)authentication.getPrincipal())); if (searchTLoginHistoryByLoginUser.size() != 0) { // 現在のログインユーザの前回のログイン時間を取得 ((CustomerUserDetails)authentication.getPrincipal()).setLoginDatetime(searchTLoginHistoryByLoginUser.get(0).getId().getLoginDatetime().format(localDatetimeFormat)); } //ログイン履歴テーブルに挿入 tLoginHistoryService.insert(((CustomerUserDetails)authentication.getPrincipal()).getMAccount().getUserId(), request, LoginResult.SUCCESS); if(authentication != null && authentication.getPrincipal()!=null && authentication.getPrincipal() instanceof CustomerUserDetails && ((CustomerUserDetails)authentication.getPrincipal()).getMAccount() != null) { //パスワード変更フラグが「0(未変更)」の場合 if(((CustomerUserDetails)authentication.getPrincipal()).getMAccount().getPwdchgFlg() == PwdchgFlg.UNCHANGED) { targetUrl = "/auth/passwordChange"; }else { targetUrl = "/success"; } } // targetUrlにリダイレクトする String referer = request.getHeader("referer"); redirectStrategy.sendRedirect(request, response, referer.replaceAll(request.getContextPath() + ".*", "") + request.getContextPath() + targetUrl); }

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

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

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

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

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

Luice

2021/12/02 01:49

仕様書を確認するか、作った人にお問い合わせ下さい。 それが正確で確実な手段です。
jimbe

2021/12/02 03:51

「木を見て森を見ず」、一部分だけのコード・仕様を見て判断しようとしても分からない場合もあります。少し「引いた」目線で、ログインによって「ログイン日付が最新に更新される」他に何かが変わるという仕様になっていないかを確認しては如何でしょうか。 …にしても、なんだかダラダラした読み難いコードです。
ikesan

2021/12/02 04:22

ご指摘いただきありがとうございます。 まだまだ全体的な把握というものが自分には出来ていないので、このメソッドのみを見るのでは無く全体的にコードをもう一度見直そうと思います。
guest

回答1

0

自己解決

先輩の方に確認したところ、前回ログイン日時をヘッダーに出力するという使用だったので、ここで前回の最新のものを取得するとのことでした。
ヒントを頂いた方々ありがとうございました。

投稿2021/12/02 06:43

ikesan

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問