以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助:关于使用SQL外部数据源的目录树形式授权的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=31050) |
-- 作者:kevin -- 发布时间:2013/4/9 12:56:00 -- 求助:关于使用SQL外部数据源的目录树形式授权的问题 问题1:创建的Users表所使用的数据类型分别是 Name : nchar(10) Group : nchar(10) Password : nchar(20) 我在设计用户登录窗口时,遇到的问题是,输入正确的用户名及密码,永远都是提示密码错误.后来我发现 为密码框加足二十个字符时(空格),就成功登录了. 所使用的代码是: Dim s1 As String = e.Form.Controls("Password").value Dim s3 As String = s1.PadRight(20) e.Form.Controls("Password").value = s3 以上代码意思就是:密码框所输入的字符只要不足20位时,则以空格形式加足20位. ----------------------------------------------------------------------------------- 所以,有没有什么办法,除去SQL数据中的空格,或者我应该使用什么数据类型,可以解决这个问题. 尽管以上问题我自己 已经 解决, 问题2:我现在想继续使用目录树形式授权的功能;但是总是提示我没有权限,也就是说,系统中,与用户表所进行的对比是无效的, 那么,我要不要在内部函数中修改以下代码: If User.Type <> UserTypeEnum.User Then \' 如果是开发者或者管理员 Return True \'则具备所有权限 End If Dim dt As DataTable = DataTables("授权") Dim dr As DataRow \'首先判断分组的授权用户是否包括此用户或此用户所属的分组 dr = dt.Find("分组 = \'" & args(0) & "\' And 权限 Is Null" ) If dr Is Nothing Then MessageBox.show("不存在名为""" & args(0) & "分组!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) Return False End If If dr.IsNull("用户") = False Then Dim nms() As String = dr("用户").Split(",") For Each nm As String In nms If nm = _UserGroup OrElse nm = _UserName Then \'如果授权用户包括登录用户所属的分组或其用户名 Return True \'返回True End If Next End If \'然后判断权限的授权用户是否包括此用户或此用户所属的分组 If Args(1) = "" Then Return False End If dr = dt.Find("分组 = \'" & args(0) & "\' And 权限 = \'" & args(1) & "\'") If dr Is Nothing Then MessageBox.show("不存在名为""" & args(1) & "权限!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) Return False End If If dr.IsNull("用户") = False Then Dim nms() As String = dr("用户").Split(",") For Each nm As String In nms If nm = _UserGroup OrElse nm = _UserName Then \'如果授权用户包括登录用户所属的分组或其用户名 Return True \'返回True End If Next End If Return False 请前辈们帮忙看看这代码,想想办法!!!
|
-- 作者:Bin -- 发布时间:2013/4/9 14:12:00 -- 1.那是因为你外部数据库表的字段有问题.设置为nvarchar 即可.char是会有空白填充的. 或者你可以把得出来的数据先Trim() 一次. 2.没懂你的问题.
|