【问题标题】:Difference between two FindByIdAsync in Identity Framework身份框架中两个 FindByIdAsync 的区别
【发布时间】:2018-10-09 13:57:25
【问题描述】:

UserManagerUserStore 类中的各种方法都有两个版本。所以我的问题是:

  1. 这是为什么呢?
  2. 什么时候使用哪个以及用于什么?

所以我有一个想法是UserStore 用于查找用户和创建用户,用于与用户相关的操作。但是为什么UserManager也有同样的方法。

附加问题:我是否需要使用创建的UserStore 对象并在UserManager 方法(如FindByIdAsync)中使用来调用UserStore 方法(如FindByIdAsync)。但这没有任何意义……

Microsoft 在 MSDN 上帮助开发人员并不是很好,所以需要从这里了解。

谢谢

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-mvc-5 asp.net-identity


    【解决方案1】:

    UserStore 是在UserManager 中使用的辅助类。 事实上,UserManager.FindByIdAsync 所做的只是调用UserStore.FindByIdAsync - 你可以在source code 中看到它。

    您需要直接使用UserStore 是非常罕见的情况——我从来没有使用过它,我所有的身份处理都是通过UserManagerRoleManager。并且IUserStore 的存在使得框架可以为存储放置一个隔离层——如果你想实现自己的存储,你可以实现IUserStore 并为UserManager 提供它。

    【讨论】:

    • 我已经实现了我自己的storage,所以我已经实现了IUserStore,而且我觉得没有必要对UserManager 中的FindByIdAsync 做任何事情。但你说的是相反的。我仍然对我可以在UserManager 中使用此方法做什么感到困惑?
    • @Alex 好吧,它会按照它在锡上所说的那样做——如果你提供一个 ID,它会为你找到一个用户对象。通常在使用 Identity 时,您需要的不仅仅是存储 - 例如生成用于密码重置或更改密码的用户令牌。 IUserStore 无法做到这一点。如果您在依赖项(控制器)中注入 UserManager,它将为您提供所需的所有内容,而不必对 UserManager 和 UserStorage 有 2 个依赖项。
    • 您发布的链接也是身份框架代码吗?
    猜你喜欢
    • 2015-03-24
    • 1970-01-01
    • 2018-04-26
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    相关资源
    最近更新 更多