簡體   English   中英

使用ASP.NET成員資格提供程序數據庫和您自己的數據庫

[英]Using the ASP.NET membership provider database with your own database?

我們正在開發,目前使用它自己的數據庫中的ASP.NET MVC應用程序 ApplicationData域模型和另一個Membership的用戶管理/成員提供。

我們使用控制器中的data-annotations來訪問限制。

[Authorize(Roles = "administrators, managers")]

這對於簡單的用例非常有用。


在我們擴展應用程序時,我們的客戶希望限制specific users訪問ApplicationData數據庫的特定區域。

我們的每個產品都包含一個外鍵,指的是產品組裝的區域。

用戶故事將是:

  • NewYorkManagers角色的用戶應該只能編輯/查看在紐約組裝的產品。

我們創建了一個包含UserIdRegionId的占位符表UserRightsRegions

如何鏈接 ApplicationDataMembership數據庫以便正常工作/具有cross-database-key-references (這樣的事情甚至可能嗎?)

所有幫助都非常感謝!

在我看來,你應該能夠可靠地將你的數據庫與標准的aspnet_db集成,但我建議不要復制或替換aspnet_users表。

這是使用aspnet_db模式的所有提供者的焦點,包括可能增加但不實現自定義替換的自定義提供者。

為了最大限度地重用提供程序堆棧/ API中經過測試的強大基礎架構代碼,最好使用該流程。

您將需要非常關注任何已修改的成員資格核心功能,並確保新約束在每種情況下以預期方式運行的方式。

我發現最需要關注的會員故事的一個方面是刪除用戶,對刪除用戶sproc的簡單修改/添加可以有效地管理這個。

聽起來您可能需要創建自己的自定義成員資格提供程序。 你可能(不是積極的)擴展現有的,所以你不必完全重新發明它。 是來自ASP.net的視頻,描述了如何做到這一點。 谷歌“asp.net會員提供商”更多。

您可以嘗試滾動自己的會員資格,或者像Dave建議的那樣延長。

創建您自己的[Users]表,可以根據aspnet_Membership表填充。 因此,您可以對其進行更多控制。

您還可以實現更復雜的Profiles系統。 .NET團隊已經改進了現在存儲配置文件的方式,因此您可以將它們設置為現在存儲在實際的表中[感謝上帝],而不是將它們“blobicizing”。

表配置提供程序

如果您找到了正確的文章,擴展成員資格提供程序以實現額外功能非常容易。 我已將用戶表移動到我的主SQL服務器表,並編寫了自己的角色管理器,從單獨的表中獲取值。 你需要做的是在你的用戶數據庫中設置一個表,每個用戶的位置,然后在用戶對象上創建一個方法,如“GetLocation()”,從數據庫返回用戶的位置,你然后可以使用它來過濾主數據庫中的數據。 這里有一些我在我的書簽中喋喋不休的文章,看看它們是否有用,如果你看一下主要的ASP.NET網站或谷歌的會員提供商擴展文章,那里有很多。 http://msdn.microsoft.com/en-us/library/ms998347.aspx http://www.4guysfromrolla.com/articles/120705-1.aspx http://msdn.microsoft.com/en-us/庫/ aa479048.aspx

正如其他人指出的那樣,有許多可用的資源可以幫助您使用現有數據庫創建自定義提供程序。

看起來你正朝着正確的方向前進,有了映射表。 我認為您缺少的一件是分布式查詢 此鏈接特定於Sql Server 2008.如果您正在使用它,那么有一個鏈接到Sql Server 2005的文檔。

暫無
暫無

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

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