gpt4 book ai didi

asp.net-mvc - 如何将 Asp.Net Identity 中的大 cookie 分成较小的 cookie 以允许许多声明?

转载 作者:行者123 更新时间:2023-12-03 14:30:34 24 4
gpt4 key购买 nike

我正在为我们的 MVC 应用程序开发基于声明的授权原型(prototype)。我们使用 Asp.Net Identity 进行身份验证。

我们希望对每个 Controller 操作都有一个声明,然后放弃/取消用户的声明,这样我们就可以很好地控制谁可以去哪里。

我们的应用程序已经有 800 多个 Action 并且还在不断增长。我制作了一个小测试应用程序,看看如何处理这么多的 claim 。并遇到问题:cookies are limited to 4092 bytes .

并且拥有大量声明会增加身份验证 cookie。大约 600 个带有短名称/值的声明(每个 5 个字符)给我的 cookie 大小超过 4K,而拥有这个数量的声明的用户无法登录 - 无法在浏览器中设置 cookie。

并且 600 个 claim 不是我们的应用程序的限制。我们可能需要更多。

有没有办法将 auth-cookie 分成几个较小的 cookie?

p.s.如果你好奇,这里是我的code for claims "profiler"连同 rest of the project .

pps我知道大型 cookie 对性能的影响。现在不用担心。

更新 目前我的回答没有开箱即用的解决方案。但看起来我不是唯一一个遇到这个问题的人。 Microsoft.Owin正在处理 auth-cookie。 Owin.Cookies 的当前源代码有 ChunkingCookieManagerCookieAuthenticationMiddleware 中默认分配.

坏消息是这段代码非常新鲜(2014 年 7 月 10 日 checkin ,只有 20 天)。它可通过 nuget Microsoft.Owin.Security.Cookies 的预发布获得.不确定我是否想在生产站点中使用 RC2。

还有什么办法吗?

最佳答案

您错误地使用了声明。声明代表用户的身份,而不是允许他们执行的操作。您遇到了问题,因为您将 claim 视为用户权限的房屋。您确实应该找到一种方法在您的应用程序中将两者分开。

在 MVC 方式中,这将创建一个自定义授权属性,从声明 cookie 中获取用户的身份,并验证用户的身份是否可以执行某些操作。

请参阅下面的相关问题。

Restricting access to records. Is claim-based permissions a good idea

Claims authorization for specific resources

关于asp.net-mvc - 如何将 Asp.Net Identity 中的大 cookie 分成较小的 cookie 以允许许多声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25025979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com