簡體   English   中英

更改用戶權限時刷新 MySQL 連接 object

[英]Refresh MySQL connection object when privileges are changed for a user

我有一個 object 與用戶名:'user'MySql中的數據庫的連接,現在我已經明確更改了該'用戶'的一些用戶權限,但它沒有對現有連接對象生效。 此權限更改僅適用於新連接 object。

例如:我有一個分配了所有權限的連接對象(conn),現在我更改了同一個連接對象(conn)的說(寫/讀)權限,但該對象(conn)仍然能夠執行選擇/插入操作.

當用戶的任何權限發生更改時,是否有辦法自動刷新連接 object。

我為你找到了這個 class,它可能會幫助https://www.codota.com/code/java/methods/android.database.DataSetObservable/notifyChanged但在你的地方我不會在 ZA2668CFFDE69ACBD1 中保存任何信息也許。 您可以嘗試創建將包含用戶信息的表,並在您需要僅為特權用戶運行某些方法時檢查此信息。 在我的舊項目中,我創建了這個表:

表用戶

表訪問權限

並創建檢查 access_right 到管理員面板等功能的方法

function 示例:

public class Blog extends Initialization {
   private boolean stop;
   private Statement st;
   private ResultSet rs;
   private String login;
   private BufferedReader reader;
   private BufferedWriter writer;

   Blog(Statement st, String login, BufferedReader reader, BufferedWriter writer) {
    this.st = st;
    this.login = login;
    this.reader = reader;
    this.writer = writer;
}
private void checkRightsToCallAdministrationPanel() {
    try {
        String access_rightsString = "";

        rs = st.executeQuery("SELECT access_id FROM users WHERE login='" + login + "';");
        while (rs.next()) {
            access_rightsString = rs.getString(1);
        }

        if (Integer.parseInt(access_rightsString) < 3) {
            callAdministrationPanel();
        } else {
            writer.write("No such variant\n");
            writer.flush();
        }
    } catch (IOException | SQLException e) {
        e.printStackTrace();
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM