【问题标题】:ASP.NET Identity / OWIN: Custom IPrinciple / IIdentity retrievalASP.NET Identity / OWIN:自定义 IPrinciple / IIdentity 检索
【发布时间】:2014-02-28 07:17:38
【问题描述】:

在经过身份验证的 ASP.NET 请求的生命周期中的某个时刻,会从后备存储(实体框架或其他)检索IdentityUser。我想加入这个过程。原因是用户有一些集合属性,我想通过一次调用数据库来检索这些属性(使用IQueryable<T>.Include)。

这在 ASP.NET 身份中是否可行?

【问题讨论】:

    标签: asp.net entity-framework asp.net-identity


    【解决方案1】:

    我想你可能想实现一个ClaimsAuthenticationManager

    声明身份验证管理器在声明处理管道中提供一个位置,用于在执行到达您的应用程序代码之前将处理逻辑(过滤、验证、扩展)应用到传入主体中的声明集合。

    因为您正在寻找的内容对我来说听起来像 extension。您覆盖具有此签名的 Authenticate 方法:

    public virtual ClaimsPrincipal Authenticate(
        string resourceName,
        ClaimsPrincipal incomingPrincipal
    )
    

    【讨论】:

    • 我相信这是朝着正确方向迈出的一步。我实际上发现了一些事情。当您登录时,会创建一个 cookie,其中包含一些声明:您的角色(名称)和您的用户名。如果 cookie 存在且有效(即:可解密,签名有效),则假定您已登录并正常。这意味着您的角色甚至您在系统中的存在可能会过时!由于身份验证机制不了解 ASP.NET 身份,因此实际上没有执行任何类型的数据库调用。您可以自己轻松尝试。创建一个用户,以该用户身份登录,然后将其删除。
    【解决方案2】:

    您可能想要覆盖 UserStore 并覆盖所有返回 User 的 FindXXX 方法,添加您想要的任何 Includes。

    【讨论】:

    • 这不是一个可行的解决方案,因为它适用于所有用户,否则我必须检查每个方法是否包含任何内容。
    猜你喜欢
    • 2010-11-07
    • 2015-10-22
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多