【问题标题】:Refresh MySQL connection object when privileges are changed for a user更改用户的权限时刷新 MySQL 连接对象
【发布时间】:2020-11-03 02:39:10
【问题描述】:

我有一个 username:'user'MySql 中的数据库的连接对象,现在我已经明确更改了该“用户”的一些用户权限,但它是对现有的连接对象不生效。此权限更改仅适用于新的连接对象。

例如:我有一个分配了所有权限的连接对象(conn),现在我更改了相同连接对象(conn)的说(写/读)权限,但该对象(conn ) 仍然能够进行选择/插入操作。

有没有办法在用户的任何权限发生更改时自动刷新连接对象。

【问题讨论】:

    标签: java mysql connection refresh privileges


    【解决方案1】:

    我为你找到了这个类,它可能会帮助https://www.codota.com/code/java/methods/android.database.DataSetObservable/notifyChanged 但是在你的地方,我可能不会在对象中保存任何信息,除了令牌。 您可以尝试创建将包含用户信息的表,并在您需要仅为特权用户运行某些方法时检查此信息。 在我的旧项目中,我创建了这些表:

    Table users

    Table access rights

    并创建方法来检查管理员面板等功能的访问权限

    函数示例:

    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();
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 2019-08-17
      • 1970-01-01
      • 2013-12-04
      • 2019-09-30
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多