【发布时间】:2017-01-18 03:25:32
【问题描述】:
我正在考虑在使用 cqrs+eventstore 的 .net 核心 api 中实现用户管理。
我的想法: 因为我将在我的大多数域模型中使用 mongo,所以我想为什么不也使用它来存储我的用户。
即有一个CreateUser 命令和查询服务订阅UserCreated 事件并将用户存储在mongo 中。
我希望将 ASP.NET Core Identity 用于我的用户管理,但我在任何地方都能看到身份,例如https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity,它与 asp.net mvc 应用程序一起使用。这让我想我是否甚至需要身份。我将向各种客户端、移动端、Web 等公开我的 api。
阅读还有一个 IdentityServer4,我不太明白它是如何适应的。
有人指出我正确的方向吗?
【问题讨论】:
-
你不需要使用 MVC 来使用 Identity 的东西。 Identity 只是使用实体框架为您提供一些表,并为您提供一些服务类,用于创建/更新用户、验证用户、管理声明、生成用于验证电子邮件地址的令牌或请求重置密码等基本操作。我肯定会推荐使用内置的标识 - 它经过深思熟虑,可以轻松根据您的需求进行定制。它通过授权属性等与 MVC 很好地集成,但您不必使用 MVC 来使用 Identity。
-
所以你说的是我将使用 web api 来通过
UserManager.cs等执行创建/更新等任务?即(客户端:网络、移动设备等)--> web api --> (Identity + EF)? -
就是这样,是的。
-
identityserver4 在哪里适合?还有来自stackoverflow.com/q/39862314/7379424 的讨论提到它将添加基于 cookie 的身份验证。有什么问题吗?
-
听起来你混淆了身份框架和身份服务器。身份框架只是为您提供了在您的应用程序中管理用户的工具。 IdentityServer 或多或少是它自己的应用程序,您可以自定义并与您的 web api 分开运行,然后您的 web api 可以针对它进行身份验证。无论哪种方式,您都可以使用令牌而不是 cookie。令牌通常是首选,因为它们更具可扩展性。这是对令牌 v cookie 的更好分析(我只是用谷歌搜索了一下,似乎还可以)..stormpath.com/blog/token-authentication-scalable-user-mgmt
标签: asp.net-core cqrs asp.net-core-webapi