代码之家  ›  专栏  ›  技术社区  ›  AotN

Asp。Net核心:用户会话管理系统

  •  1
  • AotN  · 技术社区  · 7 年前

    我目前正在尝试为用户设置一个会话管理界面,以便用户基本上注销他们在其他设备上可能处于活动状态的会话。然而,我对Asp还是有点陌生。Net核心2.1,我很难找到关于这个主题的好文档。

    我考虑过使用分布式SQL server缓存系统。然而,在进一步检查之后,我发现分布式缓存的密钥与会话id不相等,这是不应该的。

    我还尝试编写一些中间件,将会话id存储在单独的表中,并与用户表建立多对一关系。这张表将有一个滑动到期日期和一个令牌。如果会话有令牌,则会话将被持久化。。我的想法是使用cookie为客户机分配一个令牌。这样,如果他们的会话过期,它将使用cookie令牌查找会话,如果存在,则登录相应的用户。然后它将复制令牌并删除旧会话。有点像“记住我”的系统。如果令牌为空且会话时间已过期,则会将其丢弃。如果没有找到会话,或者用户字段为空,它将注销用户。如果发现重复的令牌,它将用相应的令牌注销所有会话。然而,我宁愿使用某种内置功能(如果存在的话),以最大限度地降低打开不必要的安全漏洞的风险。

    我还发现了一些例子,可以让其他用户注销。。。但是,因为Asp。Net Identity是基于cookie的,它允许用户继续使用该网站,直到cookie过期。。。在这种情况下,这是不可取的。

    我知道。Net有IHttpSessionState,但我在Core中找不到类似的接口。不幸的是,我发现的大多数解决方案要么指向实现定制系统,要么只是展示如何注销当前会话。

    基本上,Asp中已经有了某种机制。Net内核已经实现了类似的功能?如果没有,我是否应该研究并尝试实现任何特定的接口?如果不是,我应该求助于编写自己的系统吗?如果是的话,我上面的逻辑是否有漏洞?

    下面是我所说的一个例子,来自Facebook的账户管理。我知道这是一个范围大得多的网站,但我不认为这样的功能会非常难以集成?也许是错的。。。

    (编辑了一些个人信息) enter image description here

    0 回复  |  直到 7 年前
    推荐文章