Access如何在登录窗体VBA代码中硬编码高权限用户名与密码
Access登录功能硬编码高权限账号修改方案
实现逻辑
- 在原有数据库账号校验逻辑前新增硬编码账号判断,匹配成功直接跳过数据库查询完成登录
- 原有普通用户的登录逻辑完全保留,不影响现有业务使用
- 硬编码账号默认授予最高管理员权限,自动开启Ribbon工具栏适配调试需求
修改后完整代码
Private Sub cmdLogin_Click() On Error GoTo cmdLogin_ClickErr ' 硬编码高权限账号校验 If Me.txtUserName = "Developer" And Me.txtPassword = "One" Then TempVars.Add "UserName", "Developer" TempVars.Add "Password", "One" TempVars.Add "Admin", True TempVars.Add "ReadOnly", False TempVars.Add "StdUser", False DoCmd.ShowToolbar "Ribbon", acToolbarYes DoCmd.Close acForm, Me.Name DoCmd.OpenForm "FRMMenuMain" DoEvents Exit Sub End If Dim rs As Recordset Set rs = CurrentDb.OpenRecordset("Select * From TLKPeople Where Username = '" & Me.txtUserName & "' And Password = '" & Me.txtPassword & "'") If Not rs.EOF Then TempVars.Add "UserName", rs!UserName.Value TempVars.Add "Password", rs!Password.Value TempVars.Add "Admin", rs!Admin.Value TempVars.Add "ReadOnly", rs!ReadOnly.Value TempVars.Add "StdUser", rs!STDUser.Value If Nz(TempVars!UserName, 0) = "Developer" Then DoCmd.ShowToolbar "Ribbon", acToolbarYes End If DoCmd.Close acForm, Me.Name DoCmd.OpenForm "FRMMenuMain" DoEvents Else MsgBox "登录失败,请检查用户名和密码!", vbOKOnly, "登录失败" End If rs.Close Set rs = Nothing Exit Sub cmdLogin_ClickErr: MsgBox ("错误:" & Err.Number & " " & Err.Description) End Sub
注意事项
- 硬编码账号存在安全风险,VBA代码可被反编译获取账号密码,仅适合个人调试场景使用,生产环境不建议采用该方案
- 原有代码存在SQL注入风险,恶意用户可通过输入特殊字符绕过登录校验,正式使用建议改为参数化查询规避漏洞
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

