Foxtable(狐表)用户栏目专家坐堂 → 在学习狐表官方学习及考试写法时 非微信授权登录的情况下 WeChatUsers怎么无法新增用户数据进去呢?是不是只有微信扫码才能新增用户数据呢?


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

主题:在学习狐表官方学习及考试写法时 非微信授权登录的情况下 WeChatUsers怎么无法新增用户数据进去呢?是不是只有微信扫码才能新增用户数据呢?

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)退出时把页面所有cookie都清空,可以...  发帖心情 Post By:2021/3/22 12:08:00 [只看该作者]

已经在exit函数中写了
e.Appendcookie("openid","")
e.Appendcookie("nickname","")
进行清空cookie  但是没有采用checktoken函数内容。
原来的checktoken函数代码为:
'检查授权
Dim id As String = Args(0)
Dim e As RequestEventArgs = args(1)

Dim idValue As String = e.Cookies("id") '从Cookie取加密的内容
If idValue > "" Then
    Dim pas As String = DecryptText(idValue,Vars("Key1"),Vars("key2")) '解密参数
    If pas > "" Then
        Dim arr() As String = pas.Split("|")
        Dim qt As String = e.Cookies("cqt")
        If qt <> arr(3) Then Return Nothing
        If id = arr(0) Then '如果解密后的第一个参数和id参数一致
            Dim d As Date = CDate(arr(2))
            If d >= Date.Today Then '如果Cookie中的日期大于等于今天
                Dim dr As DataRow = DataTables("WeChatUsers").Find("[_Identify] = " & id) '查询用户表是否存在此id的主键
                If dr IsNot Nothing AndAlso dr("OpenID") = arr(1) Then '查询的openid是否和解密的第二个参数一致
                    Return dr
                End If
            End If
        End If
    End If
End If
Return Nothing
原来的exit函数代码为:

Dim e As RequestEventArgs = Args(0)

Dim id As String = e.PlainText

If id > "" Then

    Dim arr() As String = id.Split("|")

    Dim dr As DataRow = Functions.Execute("CheckToken",arr(0),e)

    If dr IsNot Nothing Then

        dr = DataTables("WeChatUsersLogin").Find("[OpenID] = '" & dr("OpenID") & "' and Online = 1")

        If dr IsNot Nothing Then

            dr("Online") = False

            dr.Save

            If arr.Length = 2 AndAlso arr(1) = "Y" Then

                dr = DataTables("UsersTestForm").Find("[OpenId] = '" & dr("OpenID") & "' and IsCompleted = 0","TestID desc")

                If dr IsNot Nothing Then

                    dr("IsCompleted") = True

                    dr("CorrectRate") = dr("CorrectQty") / dr("QuestionQty")

                    dr.Save

                End If

            End If

        End If

    End If

End If

e.WriteString("OK")


现在的exit函数代码为:

Dim e As RequestEventArgs = Args(0)

Dim wb As New weui

Dim dr As DataRow = DataTables("WeChatUsersLogin").Find("[OpenID] = '" & e.Cookies("OpenID") & "' and Online = 1")

If dr IsNot Nothing Then

    dr("Online") = False

    dr.Save

    dr = DataTables("UsersTestForm").Find("[OpenId] = '" & e.Cookies("OpenID") & "' and IsCompleted = 0","TestID desc")

    If dr IsNot Nothing Then

        dr("IsCompleted") = True

        dr("CorrectRate") = dr("CorrectQty") / dr("QuestionQty")

        dr.Save

    End If

End If

e.Appendcookie("openid","")

e.Appendcookie("nickname","")

e.WriteString("<meta http-equiv='refresh' c>") '跳转到登录页

e.WriteString(wb.Build)



老师可以指导下  怎么能够完美实现退出后,原有任何记录都不允许访问。当前exit代码只能实现对应的online状态和页面的正常返回


当前还有一个问题 如果退出之后再次登录当前账户  不会报错   如果是登录别的新账户 就会报错

具体如下:




[此贴子已经被作者于2021/3/22 14:48:08编辑过]

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/22 13:57:00 [只看该作者]

checktoken函数还用到其它cookie:e.Cookies("id")、e.Cookies("cqt"),全部都清空呀

原实例并没有使用OpenID等cookie进行判断,如果自己改了,那么其它所有权限判断的地方都要自己改回来

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)checktoken函数还用到其它cookie:e....  发帖心情 Post By:2021/3/22 14:26:00 [只看该作者]

没有新增其他内容作为条件判断   只是将openid作为值写入cookie 便于其他地方进行引用
e.Cookies.Clear
全部用这个方式清空后  能够成功解决楼上报错问题

图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看

但是后退后 上一个账户的记录还是可以查看   除了不能开始答题外  其他的都可以看  这个问题都没有搞定  所以还得请教老师了
[此贴子已经被作者于2021/3/22 14:47:50编辑过]

 回到顶部
总数 13 上一页 1 2