我提前道歉,不包括任何代码,因为问题是如此不寻常,我无法找到任何关于它的正确信息,我也很难绕过它。如果问题表明我对你的理解非常缺乏理解,那你又笑了起来,我也道歉......
想象一下,如果你愿意的话,一个"多人游戏"网页。有一个登录页面,用户可以登录,他或她的名字在某处显示,cookie已设置。到目前为止,没有火箭科学。
现在让我们进一步了解:一旦用户登录,SECOND用户应该能够登录并且还应该在页面的另一半显示他或她的用户名,让我们说吧。
让我们暂时假设他们每个人都有半页工作,这样你就可以直观地了解会是什么样子。就像打开两个文本编辑器一样,让我们说吧。
那么......我该如何处理?我是否写了一个谚语
ApplicationSignInManager.MultiSignIn(ApplicationUser user)
然后是另一个
AuthenticationManager.SignIn
然后重写它下面的整个shebang,直到我得到一个有两个用户的cookie?这真的那么简单吗? (顺便说一句,我使用ASP.NET MVC 5)
或者我的理解是如此缺乏,以至于我不应该考虑这个?
问题是:用例在那里。我需要来构建它,任何方式。我只是无法弄清楚如何接近它......你呢?
修改
答案 0 :(得分:1)
在网络编程方面,你似乎对一些核心概念感到困惑。
我将假设第二个用户与第一个用户不在同一台计算机上。
多个用户当然可以使用FormsAuthentication
附带的默认ASP.NET
登录。 Cookie无法解决任何,因为Cookie是"每个用户"。
这是一个有点复杂的问题,因为您所描述的内容需要非常亲密的客户端/服务器关系。
我假设您希望在用户登录时收到通知;当另一个使用已登录而不是在下一页重新加载时。这需要某种 Web服务或至少一些ajax请求。
第一步(然而)将是" flag"以online
登录的用户,当用户登录时,以这种方式将用户标记为not-online
,您可以通过Web请求随时获取在线用户。您决定存储用户的方式无关紧要;只需确保您可以将其标记为online
/ not-online
。
获得在线用户的最简单方法是通过ajax 使用jQuery:
$.get('users/OnlineList', function (data) {
// Let's just assume that "data" is just a comma-separated string of users.
$('div#online-users').text(data);
});
然后每隔x秒通过setInterval
或类似方式执行此操作。这是hacky和丑陋,但它的工作原理;这是有多少人这样做的。
但回到手头的问题。
我看到的方式;最好的方法(如果它总是两个人)。当User-A
登录时,User-A
会被放入Lobby-1
,以便拥有某种" lobby"系统。当User-B
登录时,此用户也会被加入Lobby-1
,Lobby-1
现已关闭,不再有人加入。 User-C
和User-D
放在Lobby-2
中,依此类推。
总之:
我希望我的答案有所帮助!
答案 1 :(得分:0)
如果第二个用户已登录并执行某些操作(显示用户名),则网页应检查Web服务器/数据库。如果您需要更多信息,请告诉我。
我们假设您有一个登录页面,并且在成功登录后,它会更新表格中的记录" user"在列"登录" to" true"。让我们假设您在主页面上有一个自动收录器,显示所有已登录的用户。如果您导航到主页面,页面将选择列为"已登录的所有用户" ="真实并计算它。结果保存在变量中并显示在站点上。
如果您想了解某些内容,则必须将其保存在数据库或“静态”中。变量