Foxtable(狐表)用户栏目专家坐堂 → 如何实现移动端多端登录


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

主题:如何实现移动端多端登录

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109688 积分:558144 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/7 12:07:00 [显示全部帖子]

使用不同的首页入口。比如微信访问首页:http://www.abc.com/qiye.htm, 钉钉访问首页:http://www.abc.com/ding.htm

企业微信、钉钉使用授权功能:http://www.foxtable.com/mobilehelp/topics/0237.htm

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109688 积分:558144 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/7 13:46:00 [显示全部帖子]

差不多是这种逻辑。行不行测试过才知道

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109688 积分:558144 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/7 16:00:00 [显示全部帖子]

必须有个跳转,不能去掉

' wb.InsertHTML("<meta http-equiv='Refresh' c>") '直接跳转到首页

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109688 积分:558144 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/7 17:21:00 [显示全部帖子]

完整代码发上来

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109688 积分:558144 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/7 21:21:00 [显示全部帖子]

什么地方调试不通?通过企业微信进来后有什么具体问题?


……
ElseIf e.Path = "qywx.htm" Then
    
    Dim Multi As String = Functions.Execute("企业微信验证函数",e,e.path)
    If Multi > "" Then
        Dim Values() As String
        Values = Multi.split("|")
        uid =   Values(0)
        uname =  Values(1)
        wb.AppendCookie("uname",Values(1))
        
        MessageBox.Show(uname)
        
        cmd.CommandText = "s elect top 1 * from 用户 where username = '" & uname & "'" 微信授权不需要密码
        dt = cmd.ExecuteReader()
        If dt.DataRows.Count = 1 Then
            userid = Rand.NextString(16) '生成随机用户ID
            username = EncryptText(uname,"123","321") '将用户名加密
            
            sqltext = "D ELETE FROM 在线用户 where username = '" & username & "'"
            cmd.CommandText = sqltext
            Count= cmd.ExecuteNonQuery()
            
            sqltext = "I NSERT INTO 在线用户(username,ActiveTime,userid) VALUES ( '" & username & "','" &  ClearTime & "','" & userid & "')   U PDATE 用户  SET  UserID = '" & userid & "' ,ActiveTime = '" &  ClearTime & "' WHERE UserName = '" & DecryptText(username,"123","321") & "'   I NSERT INTO 登录日志(username,[ActiveTime],userid,usernamex,Path) VALUES ( '" & username & "','" &  ClearTime & "','" & userid & "', '" & DecryptText(username,"123","321") & "','" & e.Path  & "') "
            cmd.CommandText = sqltext
            Count= cmd.ExecuteNonQuery()
            
            
            wb.AppendCookie("uname",Values(1))
            wb.AppendCookie("username",username) '将用户名和userid写入cookie
            wb.AppendCookie("userid",userid)
            wb.InsertHTML("<meta http-equiv='Refresh' c>") '直接跳转到首页
            e.WriteString(wb.Build) '生成网页
            Return ""  '必须的
else
msgbox(“如果数据库不存在这用户名,应该提示用户联系管理员添加账户http://www.foxtable.com/mobilehelp/topics/0058.htm”)
        End If
        
        
        ' Else
        ' wb.InsertHTML("<h3 align='center' style='margin-top:5px'>错误</h3>")
        ' Return ""
        
        
 下面这个函数是干嘛用的?       
        e.AsyncExecute = True  '通知系统,将采用异步方式生成网页
        Functions.AsyncExecute("qywx", e) '异步调用函数生成网页
        Return  ""
else ‘Multi = ""应该直接返回
return “” 
    End If
    
    
    
Else '其它页面从Cookie提取登录信息进行验证
    username = e.Cookies("username")  '从cookie中获取用户名
    userid = e.Cookies("userid")  '从cookie中获取 随机ID


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109688 积分:558144 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/7 22:16:00 [显示全部帖子]

企业微信验证函数里不需要添加cookie,添加了也没有任何用处。已经在【ElseIf e.Path = "qywx.htm" Then】这里添加cookie了

【Functions.AsyncExecute("qywx", e)】代码发上来看看,正常不应该都是同一个主页吗?

感觉应该是不同登录方式添加的cookie没有统一

……
            
            wb.AppendCookie("username",username) '将用户名和userid写入cookie
            wb.AppendCookie("userid",userid)
            wb.InsertHTML("<meta http-equiv='Refresh' c>") '直接跳转到首页
            e.WriteString(wb.Build) '生成网页
            Return ""  '必须的
        End If
    End If
ElseIf e.Path = "qywx.htm" Then

    Dim Multi As String = Functions.Execute("企业微信验证函数",e,e.path)
    If Multi > "" Then
……
            
            sqltext = "I NSERT INTO 在线用户(username,ActiveTime,userid) VALUES ( '" & username & "','" &  ClearTime & "','" & userid & "')   U PDATE 用户  SET  UserID = '" & userid & "' ,ActiveTime = '" &  ClearTime & "' WHERE UserName = '" & DecryptText(username,"123","321") & "'   I NSERT INTO 登录日志(username,[ActiveTime],userid,usernamex,Path) VALUES ( '" & username & "','" &  ClearTime & "','" & userid & "', '" & DecryptText(username,"123","321") & "','" & e.Path  & "') "
            cmd.CommandText = sqltext
            Count= cmd.ExecuteNonQuery()

            wb.AppendCookie("uname",Values(1))
            wb.AppendCookie("username",username) '将用户名和userid写入cookie
            wb.AppendCookie("userid",userid)
            wb.InsertHTML("<meta http-equiv='Refresh' c>") '直接跳转到首页
            e.WriteString(wb.Build) '生成网页
            Return ""  '必须的
        End If

导致后面的验证出错

Else '其它页面从Cookie提取登录信息进行验证
    username = e.Cookies("username")  '从cookie中获取用户名
    userid = e.Cookies("userid")  '从cookie中获取 随机ID
    
    sqltext = "s elect Count(*) from 在线用户 where username = '" & username & "' and userid = '" & userid & "'"
    'MessageBox.Show("其他页面查询用户信息的 sqltext " & sqltext )
    cmd.CommandText = sqltext
     Count = cmd.ExecuteScalar 
   If  Count > 0 
……

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109688 积分:558144 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/7 22:58:00 [显示全部帖子]

qywx  函数又做一次授权验证,由必要吗?

把首页放到下面,和正常网页一样即可

'开始生成网页
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中原来的用户名和UserID
        wb.DeleteCookie("UserID")
        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")
            .Add("c3","销售统计", "./images/toast.png", "http://www.foxtable.com")
            .Add("c4","Dialog", "./images/dialog.png", "http://www.foxtable.com")
            .Add("c5","Progress", "./images/progress.png", "http://www.foxtable.com")
            .Add("c6","Msg", "./images/msg.png", "http://www.foxtable.com")
            .Add("c7","Article", "./images/article.png", "http://www.foxtable.com")
            .Add("c8","ActionSheet", "./images/actionSheet.png", "http://www.foxtable.com")
            .Add("c9","Icons", "./images/icons.png", "http://www.foxtable.com")
            .Add("c10","Panel", "./images/panel.png", "http://www.foxtable.com")
            .Add("c11","Tab", "./images/tab.png", "http://www.foxtable.com")
            .Add("c12","退出", "./images/exit.png", "exit.htm") '退出登录
        End With
End Select
e.WriteString(wb.Build) '生成网页

 回到顶部