以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  WeUI权限请教!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=150180)

--  作者:chen_sheng
--  发布时间:2020/5/22 21:05:00
--  WeUI权限请教!
参考视频和帮助用weui做了个例子 

 很快很强大  高高兴兴的发布成APP才发现只是处理了 验证登陆  没有分模块授权

没有在帮助内找到模块授权的例子  希望官方可以指导一下  感谢!

--  作者:chen_sheng
--  发布时间:2020/5/22 21:18:00
--  

以下示例代码能否加上权限的指导 这样封装APP才完美

譬如

张三 有c1的权限

李四 有所有权限的授权  

如何在用户登录成功时只看到自己授权的模块

HttpRequest事件代码:

Dim wb As New weui\'身份验证
Dim
 Verified As Boolean \'用于标记用户是否通过了身份验证
Dim
 UserName As String = e.Cookies("username"\'cookie中获取用户名
Dim
 Password As String = e.Cookies("password"\'cookie中获取用户密码
If
 e.Path = "logon.htm" \'如果是通过登录页面访问,PostValues即可中提取用户名和密码
    If e.PostValues.ContainsKey("username"AndAlso e.PostValues.ContainsKey("password")  Then
        UserName = e.PostValues("username")
        Password = e.PostValues("password")
    End 
If

End
 If
If
 UserName = "张三" AndAlso Password = "888" Then  \'实际使用的时候,请改为从数据库读取用户名和密码进行比较
    Verified  = 
True

ElseIf
 Username = "李四" AndAlso Password="999" Then
    Verified  = 
True

End
 If
\'开始生成网页
Select
 Case e.path
    
Case "logon.htm" \'登录页面
        wb.AddPageTitle("","pageheader","销售系统","由湛江辉迅基于Foxtable开发")
        If e.PostValues.
ContainsKey
("username"AndAlso e.PostValues.ContainsKey("password")  Then \'判断是否是验证失败后的重新登录
            wb.AddTopTips("","toptip1","用户名或密码错误!").msec = 2000 \'如果用户通过登录按钮访问,则给用户一个2秒的提示.
        
End If
        wb.AddForm("","form1","logon.htm")
        With wb.AddInputGroup("form1","ipg1")
            .AddInput("username",
"
户名","text")
            .AddInput("password",
"
密码","password")
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1"
"
登录""submit")
        End With
    Case "exit.htm" 
\'
退出登录
        wb.DeleteCookie("username"
\'
清除cookie中原来的用户名和密码
        wb.DeleteCookie("password")
        wb.InsertHTML("<meta http-equiv=\'Refresh\' c>"
\'
那么直接跳转到登录页面
    Case "", "default.htm" 
\'
首页
        wb.AddPageTitle("","pageheader",
"
销售系统","由湛江辉迅基于Foxtable开发")
        With wb.AddGrid("","g1")
            .Add("c1",
"
增加订单""./images/button.png").Attribute = ""
            .Add("c2","
客户管理""./images/cell.png""http://www.foxtable.com")
        End With
End
 Select
e
.WriteString(wb.Build) \'生成网页


--  作者:有点蓝
--  发布时间:2020/5/23 9:27:00
--  
简单的

    Case "", "default.htm" \'首页
        wb.AddPageTitle("","pageheader",
"
销售系统","由湛江辉迅基于Foxtable开发")
        With wb.AddGrid("","g1")
if UserName = "张三"
            .Add("c1",
"
增加订单""./images/button.png").Attribute = ""
endif
            .Add("c2","
客户管理""./images/cell.png""http://www.foxtable.com")
        End With

如果有权限表的,查表判断

    Case "", "default.htm" \'首页
        wb.AddPageTitle("","pageheader",
"
销售系统","由湛江辉迅基于Foxtable开发")
        With wb.AddGrid("","g1")
if datatables("权限").find("用户=\'" & UserName & "\' and 模块=\'增加订单\'") isnot nothing then
            .Add("c1","增加订单""./images/button.png").Attribute = ""
endif
            .Add("c2","
客户管理""./images/cell.png""http://www.foxtable.com")
        End With

--  作者:chen_sheng
--  发布时间:2020/5/23 11:45:00
--  
非常感谢蓝版指导!

我们的论坛有权限表处理的案例参考么,麻烦再指导一下!

--  作者:有点蓝
--  发布时间:2020/5/23 11:49:00
--  
比如:http://www.foxtable.com/webhelp/topics/1600.htm

或者

--  作者:南望
--  发布时间:2022/4/7 14:10:00
--  
用上面的方法只能是需要权限控制的页的链接不显示了,如果他们知道链接直接在地址栏(IP/LIST.HTM)输入仍然可以访问。如何让输入的页也要判断权限呢?

If UserName = "wh"
    .Add("c1","员工管理", "./images/button.png","list.htm")
End If 


--  作者:有点蓝
--  发布时间:2022/4/7 14:16:00
--  
既然知道方法了,往需要控制的地方套不就行了!

Select Case e.Path
    Case "a.htm"
if datatables("权限").find("用户=\'" & UserName & "\' and 模块=\'a.htm\'") isnot nothing then
     a页面的处理....
else
e.WriteString("没有权限")
endif
End
 Select

--  作者:南望
--  发布时间:2022/4/7 14:32:00
--  
我的每个页面都写到了函数里,也就是要在每个页面函数里加控制代码,这样页面多了就不好控制了,有更好的思路吗?
--  作者:有点蓝
--  发布时间:2022/4/7 14:37:00
--  
可以看看这里的用法:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=94825
--  作者:南望
--  发布时间:2022/4/7 14:52:00
--  
1、好的,那是个公众号,重点看哪部分?

2、if datatables("权限").find("用户=\'" & UserName & "\' and 模块=\'a.htm\'") isnot nothing then
模块字段是多值字段,其中包括:A.HTM|B.HTM|C.HTM,如何改上面的语句实现用户”username"可以访问a.htm,b.htm,c.htm?