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