我正在尝试为我的数据库创建一个登录名,我不想使用Microsoft的方式这样做。我想让用户使用用户名和密码登录,然后在“tblUsers”表中验证该信息。
UserID LoginID Level LevelID
jpurk jack23 admin 3
krimes kitty editor 2
lwalms low34 reader 1
我使用dlookup验证了“UserID”和“LoginID”
Nz(DLookup("[LoginID]", "tblUsers", "[UserID] = '" & Me.txtUserID & "'"), "")
=Me.txtPassword
我现在遇到的问题是,我希望菜单上的某些项目对于没有适当级别的用户不可用;如果他们只是“编辑”或“读者”,那么我不希望他们访问我放置所有管理表单的“管理”按钮。
在我使用dLookup验证用户名和密码后,我现在如何找到他们的“级别”并为不同的菜单项分配权限?谢谢。
答案 0 :(得分:2)
假设您的DLookup找到了现有的LoginID值,您可以使用另一个来检索该用户的LevelID。然后根据LevelID启用/禁用管理命令按钮。
我会在Form Load中建议这样的事情:
Dim lngLevelID As Long
lngLevelID = DLookup("[LevelID]", "tblUsers", "[LoginID] = " & Me.txtLoginID)
Me.cmdAdmin.Enabled = (lngLevelID = 3)
注意:假设您之前已将用户的LoginID号加载到名为txtLoginID的文本框中。如果您不希望用户看到它,则可以隐藏txtLoginID。或者您可以通过其他方法获取LoginID值。
如果Level和LevelID之间存在一对一的匹配,则不需要在tblUsers中存储这两个值。您可以创建一个UserLevels查找表来保存它们,并将TblUsers中的LevelID仅存储为UserLevels中相应行的外键。
最后,你正在使用的策略可以工作,但安全性很不稳定。作为愿意遵守规则的用户的“指导”,没关系。但即使是不熟练的用户也很容易避开它。如果您的安全需求非常严格,请寻找不同的方法。