0

ユーザーが入力したアカウントのクレデンシャルが特定の種類のアカウントに属しているかどうかをプログラムで確認することはできますか?はいの場合、どのように?例えば:

データベース

username                      password
jake (admin)                   qwerty
anna (student)                 asdf

ユーザーがログオン資格情報としてjakeとqwertyを入力した場合、管理者メニューにアクセスでき、学生アカウントannaとasdfを使用した場合、学生メニューにアクセスできます。

ログオンボタン:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    //str = JOptionPane.showInputDialog(this, "Enter id number: ");
    user = jTextField1.getText();
    pass = jPasswordField1.getPassword();
    login();
}

働き

private void login() {

    try {
        if ((user != null)&&(pass != null)) {
            sql = "Select * from users_table Where username='" + user + "' and password='" + pass + "'";
            ResultSet rs = stmt.executeQuery(sql);
            if( rs.next()) {
                JOptionPane.showMessageDialog(null, "A basic JOptionPane message dialog");
            } else {
                //in this case enter when  result size is zero  it means user is invalid
            }
        }
    } catch (SQLException err) {
        JOptionPane.showMessageDialog(this, err.getMessage());
    }
}
4

1 に答える 1

2

ジャイアン、ユーザーデータベースにある種の「ロール」列があるのが一般的です。

例えば:

username      password       role
jake          qwerty         admin
anna          asdf           student

結果セットで結果を取得したら、テーブルから「ロール」フィールドを読み取り、それに基づいて機能を変更します。

        ResultSet rs = stmt.executeQuery(sql);
        if( rs.next()) {
            if ("admin".equals(rs.getString("role")) {
                 // ...
            } else { 
                 // ...
            }
            JOptionPane.showMessageDialog(null, "A basic JOptionPane message dialog");
        } else {
            //in this case enter when  result size is zero  it means user is invalid
        }

幸運を!

PSはSQLインジェクション攻撃に注意してください!! 次のようにユーザー名を入力するとどうなりますか?そして、どうすればそれを防ぐことができますか?

'; delete from users_table;
于 2013-02-21T20:08:29.273 に答える