在多个项目中使用 Asp.net mvc 身份

Using Asp.net mvc identity in multiple projects

我们有一个多层项目(包含数据访问层、服务层、web ....) 我们还有一些实体,如 Person 、 User 、 Customer 、 Employee 现在我们将在我们的网站中使用 asp.net 身份进行用户注册和身份验证 现在,如果我们想在其中一层(不是网站)中注册用户,我们如何根据 asp.net 身份进行注册,以及身份验证呢?

(我的第一个想法是将用户添加到数据库并使用 Microsoft.AspNet.Identity 的 PasswordHasher Class 来散列密码,有没有更好的方法?例如将 asp.net 身份移动到一个新的 class 图书馆项目或任何其他方式)

另一件事:

我想知道我们如何在这个设计中使用其他实体,如 Customer 、 Employee ...

If we want to register a user in one of the layers ( not website ) how we can do it according to asp.net identity

您不想将 ASP.Net 标识带入 业务逻辑层 。它应该只在表示层。

(my first idea is add a user to database and use PasswordHasher Class of Microsoft.AspNet.Identity to hash a password , is there a better way ? for example move asp.net identity into a new class library project or any other ways )

首先,如果你想使用ASP.Net身份,你不想更改或修改它的表。

最简单的方法是让ASP.Net 身份先创建表。然后创建您的表,例如 Customer、Employee。如果您需要与 UserId 的关系,请使用 AspNetUsers - Id 列作为 Primary KeyForeign Key表。

Adam Freeman has free chapter for ASP.Net Identity here.

其他想法

如果你想改变很多,你可能只想考虑只使用 OwinContext 和 AuthenticationManager 而不是整个 Identity。

终于找到答案了 并感谢 Win 的指导 最后,我将用户管理器对象从 AccountController 转移到 class 库,以便在不同的控制器中使用注册和登录方法 并且我将 Microsoft.AspNet.identity 添加到我的 class 库项目之一,并创建 2 种方法用于注册和身份验证以在 web 服务中使用它 我使用 Password hasher 对密码进行哈希处理并检查了哈希密码