【问题标题】:MVC 5 current claims autorization and updating claimsMVC 5 当前声明授权和更新声明
【发布时间】:2014-02-20 02:33:13
【问题描述】:

我有 2 个关于声明的问题:

1) 在.Net 4.5 和MVC 5 中,微软如何实现自动化,当您在控制器上设置AuthorizeAttirubte 时,它​​是否检查数据库以获取用户角色?或者它使用声明?

我在某处读到微软每次都使用数据库来验证角色,他们建议编写一个新的 AuthorizeAttribute 来实现声明身份验证。

这是我说的文章:http://kevin-junghans.blogspot.be/2013/10/improving-performance-of.html

或者它已经过时并且现在微软使用声明中的角色?

2)关于索赔更新的第二个问题:

想象一下,当用户登录时,我将他的显示名称设置为声明。用户可以更改他的显示名称,所以他更改了它,但他仍然看到他的旧显示名称,直到他在网站上重新签名。

以某种方式更新声明是否正确......?又该怎么做呢?

【问题讨论】:

    标签: .net-4.5 asp.net-mvc-5 roles asp.net-identity claims


    【解决方案1】:
    1. authorize 属性使用了 User.Identity 之外的东西,例如 IsAuthenticated/IsUserInRole,它间接查看声明。数据库访问基于登录 cookie 的刷新时间,而不是授权检查,因此它是正交的。
    2. 生成登录 cookie 时更新声明(数据库命中)。要强制更新声明,您只需退出强制更新的用户即可。

    【讨论】:

    • 第一个没看懂,所以基本上控制器上的 AuthorizeAttribute 不会每次都命中数据库?但改为检查索赔,这就是我所理解的。其次,我只需要辞退用户,它会对用户会话产生任何影响吗?
    • 正确授权检查默认情况下基于声明的身份,它不会命中数据库。取决于您的应用,当您退出用户时会发生什么。
    • 什么都没有,当用户登录时,我只是提出了一些声明,就是这样)所以我想它没有效果,好吧,那我就不做了。如果您知道最后一个问题,如何知道用户是否使用持久登录(记住我,选项)
    • @HaoKung 例如,如果我将用户添加到用户角色。在不告知或强制用户退出的情况下,您将如何以及何时更新用户声明的内容?
    • 在从数据库重新生成登录 cookie 之前,用户不能拥有与担任该新角色相关的声明。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2021-04-13
    • 2014-07-05
    相关资源
    最近更新 更多