我目前正在开发C#WPF应用程序。它仅由少量人员/设备使用。为了使事情变得容易,我决定直接与MySQL数据库对话。
现在,我希望能够通过单击一个按钮来切换当前的用户/数据库凭据,或者能够实现注销功能。
我刚刚尝试过此操作:
public DBConnect()
{
Initialize(null, null);
}
private void Initialize(string uid, string password)
{
string connectionstring;
connectionstring = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
connection = new MySqlConnection(connectionstring);
}
public void setCredentials(string uid, string password)
{
Initialize(uid, password);
}
public void destroyCredentialsAndConnection()
{
connection = null;
}
但是显然在调试时我发现,旧的连接字符串仍由MySQLConnection类在后台静态缓存。
目前看来我的方法确实可行,但是我实际上担心该实现的安全性以列出一些问题:
是否有更好(更安全)的方式来切换凭据或完全注销用户?
进行研究时,我在这里或其他任何地方都没有发现任何类似的尝试。
并且如果我尝试开发php后端,那么没有很多经验会更安全吗?我还能使用我基于MySQL触发器创建的审核表吗?
如果我理解您的正确要求,您可以尝试创建一种方法来根据用户输入构建连接字符串,并在每次调用该方法时将用户的凭据注入到连接字符串中。
static SqlConnection Connection()
{
string UserName = UserNameField.Text;
string Password = PasswordField.Text;
SqlConnection Connection = new SqlConection("Server=ServerName,Port;Initial Catalog=Catalog;User Id=" + UserName + ";Password=" + Password + ";");
return Connection;
}