从UI层提取asp.net mvc标识

Pat*_*ick 8 c# asp.net-mvc asp.net-identity

我正在构建一个新的MVC应用程序.通常我总是有一个如下所示的项目结构:

  • DAL层(实体和存储库
  • 服务层(面向业务的服务调用,在api/Frontend和DAL之间进行协调)
  • 前端,这可以是Web API或MVC应用程序.

我的问题是,我总是最终得到一个用户管理的混乱实现.我使用了会员提供者,因此使这部分不那么好.现在我看到了新的Identity实现,我真的很喜欢它.我做了一些热点搜索,将它抽象到后端,但没有结果.

我发现这篇关于构建项目的帖子,但它没有给出真正的答案:解耦ASP.NET MVC 5 Identity以允许实现分层应用程序

我希望有人可以向我提供一些提示或技术文档如何抽象所有登录和身份验证到后端层.

Hen*_*ema 4

您可以在业务层中创建一个非常基本的界面。它看起来像这样:

public interface IAuthenticationService
{
    bool VerifyPassword(User user, string password);

    bool SignIn(User user);

    void SignOut();
}
Run Code Online (Sandbox Code Playgroud)

您可以在业务层、UI 层或单独的基础结构层中使用 ASP.NET Identity 来实现此接口。

该接口可以通过不同的技术来实现,这些技术可以在运行时由 IoC 容器注册,并且您可以在AccountController示例中使用该接口。由于身份验证框架往往会经常更改(每年左右),这使您可以更轻松地进行切换。

  • @Patrick如果你的意思是 [`Authorize`](http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.118).aspx) 属性,你可以使用它,ASP.NET Identity 将考虑它。它位于“System.Web.Mvc”命名空间中,因此它不直接依赖于身份验证实现。关于 OAuth,我没有这方面的经验,所以我不确定你是否可以将其抽象出来。 (2认同)