Java Swing で出席プロジェクトに取り組んでいます。ログインは 1 日 1 回のみにしてください。
私のプロジェクトには、ユーザー名とパスワードが与えられるデータベースを持つログイン ページが含まれています。ログイン (従業員の出席が更新される) が 1 日に 1 回だけ行われるようにしたいだけです。
日付が変更されたかどうかを確認する方法は?
Java Swing で出席プロジェクトに取り組んでいます。ログインは 1 日 1 回のみにしてください。
私のプロジェクトには、ユーザー名とパスワードが与えられるデータベースを持つログイン ページが含まれています。ログイン (従業員の出席が更新される) が 1 日に 1 回だけ行われるようにしたいだけです。
日付が変更されたかどうかを確認する方法は?
誰かが 1 日に 2 回以上ログインしても、本当に問題になるのでしょうか? 実際、あなたの要件にはスプーフィングの問題があります。同僚が私のパスワードを盗み、それを使用して私としてログインしたとします。ユーザーがいつでもログインできるようにし、「最後にログインしたのは 2013 年 6 月 3 日の午前 8 時 45 分 EDT でした」というメッセージを表示する方がよいでしょう。
この正確な要件が必要な場合は、最終ログイン日を、時刻を持たない SQL DATE 型としてデータベースに保存します。ログインコードは次のようになります
PreparedStatement ps = conn.prepareStatement(
"SELECT last_logon FROM USERS WHERE username = ? AND passwordHash = ?");
// Please don't store the password itself in the database.
ps.setString(1, username);
ps.setString(2, sha1(password, salt)); // very vague, I know.
ResultSet rs = ps.executeQuery();
if (rs.next()) {
java.sql.Date lastLogin = rs.getDate("last_logon");
// Check that last_logon isn't today.
// Use an UPDATE to update the field.
}
これは実際には Swing 固有ではなく、Java 固有でもありません。データベースがメッセージ ハッシュを計算する方法と、パスワードにソルトを適用する方法を確認する必要があります。塩源を決める必要があります。
データのログ データを格納するためのデータベース テーブルを作成しlogin
、列userid
、date
およびlogin
情報を持ちます。そして、login
値が0
その人がログインしなかった場合、それ以外の場合はログインした場合にプログラムできます。十分に賢い場合は、login
列は必要ありません。ここで、ユーザーがログインしようとすると、その日のそのユーザーに対してテーブルにレコードが存在するかどうかを確認します。
それで全部です