我目前正在草拟一个允许与网站访问者实时交互的应用程序。
因此,我有两种不同的“用户类型”:
- 未注册用户:这些是访客
- 注册用户:这些具有(自定义)ASP.NET MVC 成员资格
现在,我将“UserNames”和 ConnectionIds 保存在数据库中,以便将来可以自由扩展。我通过从集线器内访问 Context.Identiy.User.UserName 来做到这一点,然后在数据库中查询任何现有的“会话”。
这是问题所在:
- 我需要两种不同类型的“用户”
- 一方面,我想动态生成一个 GUID——这些是访问者,在一定数量的不活动后将从数据库中删除。
- 这些是管理员,他们的正确身份附加到 Context 对象。
那么,如何从 SignalR 访问“会话”呢?它不是真正的 Session,我只需要在对 MVC 控制器的每个初始请求中从 Cookie 中获取 SessionId,仅此而已。我需要做的就是:
- 有一个自动生成的“SessionId”,我可以用它来跨请求保留访问者
- 拥有更“扩展”的身份:我想使用 UserId 而不是 UserName
无论如何,我希望这是有道理的,但如果有任何不清楚的地方,请加入。