簡體   English   中英

.Net體系結構:將asp.net身份實現為解決方案中的單獨項目

[英].Net Architecture: Implement asp.net identity as separate project inside solution

我有一個自定義的MVC 5解決方案,該解決方案分為3個主要項目: DataAdminPublic 我需要添加.NET Identity及其相關的實用程序。 我讀過一些文章,展示了如何將其添加到現有的MVC項目中,我認為我可以處理(基本上添加依賴項/文件)。

我的問題是:

  1. 添加一個Security項目並將相關的身份信息放入其中並從Admin / Web項目中引用是否有意義?
  2. 還是應該將其駐留在Data項目中,因為已經進行了引用並處理了數據?

無論哪種方式,如何在兩個站點之間實施身份認證? 身份將被修改為包括有關用戶的額外信息,因此成為Data項目的一部分可能有意義……?

另外,我該如何實施身份/安全項目,這樣就不必在每個項目中添加身份? (體系結構是我真正需要幫助的地方)

基本上,我如何使用asp.net Identity將安全性實現為一個單獨的項目?

當我構建這樣的應用程序時,我通常使用的是Dependency Injection,並且有一個定義我的服務的項目將其稱為Core(也許在您的情況下是Data?)。 在這個項目中,我通常將創建一個ISecurityService接口,該接口定義獲取登錄用戶所需的方法:

public interface ISecurityService {
  string GetCurrentUserName();
}

您可能想返回的不只是一個字符串,一個對象等。然后,在定義ASP.net Identity功能的asp.net項目中,我只需創建一個實現ISecurityService的ASPNetSecurityService並將其連接到我的IOC /依賴注入系統中。 這樣,任何需要獲取此信息的類都可以僅請求對ISecurityService的引用,而IOC系統將為他們提供注冊的ASPNetSecurityService。

另外,您可以使用相同的技術,並根據需要將ASP.net放在一個單獨的項目中,但是通過使用這種DI技術,可以將Identity Stuff保留在asp.net mvc中,但仍然可以在任何喜歡的地方使用該功能。 。

這有幫助嗎?

我今年做了一些類似的事情,並且按我預期的那樣工作。 我擁有ASP.Net Identity作為自己的項目。 我公司也已對其進行了自定義,以處理圍繞驗證用戶的所有業務邏輯/規則。 我將其設置為NuGet軟件包,可以將其安裝到任何Web項目中,以處理對普通用戶存儲的身份驗證。 消費應用程序不需要了解有關身份驗證的任何詳細信息。 開發人員僅調用提供的方法。

我開始的方式是從默認的MVC模板創建一個項目,並記下該身份所需的所有依賴項。 然后,我將這些依賴項包含在我的自定義NuGet包中。

您可以使用NuGet包資源管理器創建自己的NuGet包: https : //npe.codeplex.com/

我檢查了筆記,這是我寫下的所有依賴項(有可能我忽略了),需要將其添加到NuGet包中:

  • NuGet軟件包:

    • ASP.Net身份核心
    • ASP.Net身份Owin
    • ASP.Net身份實體框架
    • Microsoft.Owin.Host.SystemWeb
    • 微軟.Owin.Security.Facebook
    • Microsoft.Owin.Security.Google
    • Microsoft.Owin.Security.MicrosoftAccount
    • Microsoft.Owin.Security.Twitter
  • 添加參考:

    • 系統配置
    • 系統網站
    • System.Web.Helpers

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM