Foxtable(狐表)用户栏目专家坐堂 → 符合条件后自动跳转怎么写?


  共有7870人关注过本帖树形打印复制链接

主题:符合条件后自动跳转怎么写?

帅哥哟,离线,有人找我吗?
南望
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2021/3/9 17:09:00 [显示全部帖子]

已经按12楼改过了,还是不行:

Dim sb As New StringBuilder
Dim wb As New weui
sb.AppendLine("<meta name='viewport' c>")
If e.host = "yuming.com" Then '授权测试
    Dim UserName As String
    Dim OpenID As String
    If e.GetValues.ContainsKey("code") Then '如果是通过授权链接跳转而来,就从链接重提取code来获取openid
        Dim ul As String  = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code"
        ul = CExp(ul,"wx444444444d","44444444444444444444",e.GetValues("code"))
        Dim hc As new HttpClient(ul)
        Dim jo As JObject = JObject.Parse(hc.GetData)
        'msgbox(jo.ToString)
        If jo("openid") IsNot Nothing Then '如果获取openid成功(成功的话,还会同时返回一个accesstiken,用于获取用户详情)
            OpenID = jo("openid")
            Dim dr As DataRow = DataTables("WXUsers").SqlFind("openid ='" & Openid & "'")
            If dr IsNot Nothing Then
                
                UserName = dr("nickname")
            Else

                ul = "https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN "
                '根据openid和accesstoken获取用户详情,注意这里这个accesstoken不是普通accesston,只能用于网页授权
                hc = New HttpClient(CExp(ul, jo("access_token"), OpenId))
                jo = jo.Parse(hc.GetData)
                If jo("openid") IsNot Nothing Then
                    UserName = jo("nickname")
                    dr = DataTables("WXUsers").AddNew()
                    Dim nms() As String = {"openid","nickname","sex","city","country","province","headimgurl"} '""
                    For Each nm As String In nms
                        dr(nm) = jo(nm)
                    Next
                    dr.Save
                Else
                    e.WriteString(jo.ToString) '在用户浏览器显示错误信息
                    Return
                End If
            End If
            'e.AppendCookie("username",UserName) '用户名和openid存储在Cookie中
            'e.AppendCookie("openid",OpenID)
            wb.AppendCookie("username",UserName) '用户名和openid存储在Cookie中
            wb.AppendCookie("openid",OpenID)
            
        Else
            e.WriteString(jo.ToString) '在用户浏览器显示错误信息
            Return
        End If
    Else
        UserName = e.Cookies("username") '从cookie获取用户名和openid
        OpenID = e.Cookies("openid")
        
        If userName = "" OrElse OpenID = "" Then

            Dim ul As String  = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx833333b68fd&redirect_uri=http%3a%2f%2fyuming.com&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect"
            wb.InsertHTML("<meta http-equiv='Refresh' c>") '跳转到授权链接
            e.WriteString(wb.Build)
            'e.WriteString(sb.ToString)
            Return
        End If
    End If
    If  OpenID > "" And UserName > "" Then
        '这里可以做进一步的权限判断
'msgbox(OpenID)
'msgbox(UserName)
'sb.AppendLine("欢迎" & UserName & "光临, <a href='http://wexin.foxtable.com'>刷新页面</a>")
sb.AppendLine("<meta http-equiv='Refresh' c>")
    Else
        sb.AppendLine("你无权访问本系统")
    End If
End If
e.WriteString(sb.ToString)


Select Case e.path
    Case "logon.htm" '登录页面
        Functions.Execute("login",e)
    Case "exit.htm" '退出登录
        Functions.Execute("exit",e)
        'Case "", "default.htm" '首页
    Case "default.htm" '首页
        Functions.Execute("default",e)
    Case "list.htm"
        Functions.Execute("List",e)
    Case "addnew.htm"
        Functions.Execute("AddNew",e)
    Case "edit.htm"
        Functions.Execute("Edit",e)
    Case "delete.htm"
        Functions.Execute("Delete",e)
    Case "handle.htm"
        Functions.Execute("handle",e)
    Case "tongji.htm"
        Functions.Execute("Statistics",e)
    Case "filter.htm"
        Functions.Execute("Filter",e)
    Case "wefox"
        If e.Request.HttpMethod.ToUpper = "GET"
            If Functions.Execute("VerifySignature",e) Then
                e.WriteString(e.GetValues("echostr"))
            End If
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
南望
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2021/3/9 20:41:00 [显示全部帖子]

1、用如下代码的固定IPENID来管理授权可否?(指定某一固定openid访问A页面,其他访问B页面)
2、这些条件放在上面代码的哪个位置合适?

if OpenID ="skdsk2old82lkdk" then
   wb.InsertHTML("<meta http-equiv='Refresh' c>") '如果openID等一个固定值,则跳转manager.htm页面
else
   wb.InsertHTML("<meta http-equiv='Refresh' c>") ‘否则跳转default.htm页面
end if
e.WriteString(wb.Build)

 回到顶部
帅哥哟,离线,有人找我吗?
南望
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2021/3/9 21:25:00 [显示全部帖子]

谢谢蓝版
1、那这些代码放在哪个位置上呢?
2、公众号的自定义菜单可否跟据不同appid跳到不同界面?
[此贴子已经被作者于2021/3/9 21:25:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
南望
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2021/3/10 11:32:00 [显示全部帖子]

1、自定义菜单绑定指的是在公众号后台管理界面设置对吧?
2、您帮忙看看下面这个逻辑对不对?

当公众号的用户点击”菜单一“时直接跳转到授权模式的URL
    获取openid
    if openid="1111111" then 
    跳转到A.HTM    
    ELSE
    跳转到B.HTM
end if
abc.htm、a.htm、b.htm这三个页面都需要做一次详细授权验证吗?还是abc.htm只负责获取openid来跳转,然后由a.htm和b.htm来进行详细授权验证?有点晕不知道我说明白没

 回到顶部
帅哥哟,离线,有人找我吗?
南望
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2021/3/10 15:55:00 [显示全部帖子]

也就是说每个生成的HTM都需要验证以避免绕过授权的情况。

代码怎么写逻辑能清晰些呢?

 回到顶部
帅哥哟,离线,有人找我吗?
南望
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2021/3/10 16:26:00 [显示全部帖子]

把帮助的用法改为授权验证,怎么个改法?麻烦老师给一段代码范例

 回到顶部
帅哥哟,离线,有人找我吗?
南望
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2021/3/10 16:32:00 [显示全部帖子]

哦,我现在就是用的那个。
但为了方便调试我申请了一个通道映射,能正常运行。现在问题是按19楼代码
If e.host = "yuming.com" Then这个判断始终不符合,结果后续的其他网页还都能正常访问。

 回到顶部
帅哥哟,离线,有人找我吗?
南望
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2021/3/10 16:33:00 [显示全部帖子]

就是网页授权验证没通过的情况下,其他页面都能正常访问。

 回到顶部
帅哥哟,离线,有人找我吗?
南望
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2021/3/11 15:06:00 [显示全部帖子]

    If  OpenID > "" And UserName > "" Then
    '为什么在OPENID和USERNAME不为空的情况下,下面的代码被循环执行?
        wb.InsertHTML("<meta http-equiv='Refresh' c>")
        e.WriteString(wb.Build)
        Return
    Else
        e.WriteString("你无权访问本系统")
        Return
    End If

 回到顶部
帅哥哟,离线,有人找我吗?
南望
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:391 积分:3290 威望:0 精华:0 注册:2014/4/9 10:04:00
  发帖心情 Post By:2021/3/11 15:27:00 [显示全部帖子]

老师帮忙看看

 回到顶部
总数 56 上一页 1 2 3 4 5 6 下一页