不处理身份验证,但需要声明和 cookie

Not handling authentication, but need claims and cookie

我正在创建一个新的 asp.net MVC 5 应用程序。身份验证由第三方使用智能卡处理。一旦第三方对用户进行身份验证,我就会收到用户的唯一 ID(在 http header 内),我将其与我的数据库进行匹配,以便找到有关该用户的相关信息(角色、显示名称等) .).

目前,在每次页面请求时,都会将发送的用户 ID 与数据库进行比较,并执行检查以确保用户具有查看所请求页面的适当权限。虽然这可行,但当所有用户信息都可以存储在 cookie 中时,它确实看起来像是一堆不必要的数据库命中。

如果我使用个人用户帐户进行身份验证,我要做的只是使用身份和 OWIN 内置。但是由于我不处理身份验证,而只是处理授权,有没有办法使用 Identity 和 OWIN 的所有好的功能(特别是声明和 cookie)?如果没有,怎么办?

此外,我特别感兴趣的是何时添加或删除角色。将 OWIN 与个人用户帐户一起使用,更新 cookie 就像将用户注销一样简单,然后立即在后台返回。提出的任何解决方案也需要该功能。

任何见解都会非常有帮助。感谢阅读!

您可以通过直接将值存储在自定义 cookie 中来完成您的要求,但就您的目的而言,我觉得您可能对利用 sessions 来跟踪该信息更感兴趣。这将使您所有的实际数据都存储在服务器端,这样更安全,因为它不易受到 cookie 修改的影响,并且它允许您更自由地控制状态(对于您的角色示例,您不必 "update" 根本没有 cookie,只需更新服务器端的会话变量以根据需要添加或删除角色)。

想通了。找到了一篇真正有帮助的好文章:

http://www.khalidabuhakmeh.com/asp-net-mvc-5-authentication-breakdown-part-deux