2016-11-15 40 views
2

我正在研究asp.net MVC核心应用程序。我有用户和角色表的自定义数据库。我想在自定义表格中使用asp.net标识,这样我就不必使用aspnetusers,aspnet角色表格。如何使用asp.net标识和asp.net核心执行此操作使用与自定义表的aspnet身份

回答

1

祝你好运! :) 过去几天我刚刚经历了这个过程。我有它的工作,但在一些阶段,它真的很痛苦。

简而言之:

  1. 你需要创建一个实现接口IUSER自己的用户模型。
  2. 您需要创建自己的DAL,从您的自定义数据库表中获取数据
  3. 你需要实现自己的UserStore,基于要使用

什么asp.identity的功能实现不同的接口此链接将帮助您: https://www.asp.net/identity/overview/extensibility/overview-of-custom-storage-providers-for-aspnet-identity

+0

它是否与我自己的表交替使用asp.net标识或aspnet标识? –

+0

我不知道我明白你的问题。你能解释一下你的意思吗? –

+2

啊哈,好的。不,它不是asp.net身份的替代品。它是使用你自己的数据库的asp.identity。这就是整个观点:asp.identity内在使用它的接口,然后你必须实现接口与你的自定义数据库进行通信,以告诉asp.identity如何使用它。正如链接上的第一句话所述:“ASP.NET Identity是一个可扩展的系统,可让您创建自己的存储提供程序并将其插入到应用程序中,而无需重新运行应用程序。” –

1

您可以使用Cookie中间件身份验证。

在你Startup.cs添加

app.UseCookieAuthentication(new CookieAuthenticationOptions() 
    { 
     AuthenticationScheme = "MyCookieMiddlewareInstance", 
     LoginPath = new PathString("/Account/Unauthorized/"), 
     AccessDeniedPath = new PathString("/Account/Forbidden/"), 
     AutomaticAuthenticate = true, 
     AutomaticChallenge = true 
    }); 

在您的代码,您验证用户名和密码后,到登录你叫

await HttpContext.Authentication.SignInAsync("MyCookieMiddlewareInstance", principal); 

签收

await HttpContext.Authentication.SignOutAsync("MyCookieMiddlewareInstance"); 

请参阅在Microsoft website文章了解更多详情

+0

如何在这种情况下处理注册?它是否与我自己的表交替使用asp.net标识或aspnet标识? –

+1

您必须使用您自己的注册方法。您的用户和角色表可以看起来像没有任何限制的任何东西。 – malkassem

相关问题