-3

Java Swing で出席プロジェクトに取り組んでいます。ログインは 1 日 1 回のみにしてください。

私のプロジェクトには、ユーザー名とパスワードが与えられるデータベースを持つログイン ページが含まれています。ログイン (従業員の出席が更新される) が 1 日に 1 回だけ行われるようにしたいだけです。

日付が変更されたかどうかを確認する方法は?

4

3 に答える 3

3

誰かが 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 固有でもありません。データベースがメッセージ ハッシュを計算する方法と、パスワードにソルトを適用する方法を確認する必要があります。塩源を決める必要があります。

于 2013-06-03T14:22:04.860 に答える
0

データのログ データを格納するためのデータベース テーブルを作成しlogin、列useriddateおよびlogin情報を持ちます。そして、login値が0その人がログインしなかった場合、それ以外の場合はログインした場合にプログラムできます。十分に賢い場合は、login列は必要ありません。ここで、ユーザーがログインしようとすると、その日のそのユーザーに対してテーブルにレコードが存在するかどうかを確認します。

それで全部です

于 2013-06-03T14:20:37.833 に答える