2013-09-30 65 views
0

我爲我的客戶創建了一個asp門戶。他們都訪問相同的網站並傳入一個令牌,這是一個guid。這個guid告訴我他們屬於哪個公司以及他們有什麼權限。我可以基於我的asp會員供應商'應用程序'guid

我有成員資格提供程序設置爲不允許重複的電子郵件地址和同一應用程序下的所有人。所以,考慮到這一點,我想我可以做以下事情,讓他們使用同一個電子郵件帳戶向多家公司註冊。

  1. 爲每個標記(針對每個公司)創建一個成員資格提供程序應用程序。
  2. 編寫找到所有都是基於此GUID並將其放置在適當的應用

將這項工作帳目腳本?它是否允許我的客戶爲使用相同電子郵件地址的每個令牌/公司創建登錄?

感謝您的幫助!

+0

您正在使用SqlMembershipProvider的(默認/內置一)或您自己的自定義成員資格提供? – granadaCoder

+0

@granadaCoder我使用的AspNetSqlMembershipProvider,我認爲是你提到的相同的東西? – ErocM

+0

然後我的答案..在你​​編寫存儲過程的腳本.....對你更有意義。 – granadaCoder

回答

1

如果劇本出來

[dbo].[aspnet_Membership_FindUsersByEmail] 

,你會看到(默認的實現)已經「通過應用分離」。 (因爲這個過程需要「應用程序名稱」作爲參數。

所以,如果你編程設置

MembershipProvider.ApplicationName

http://msdn.microsoft.com/en-us/library/system.web.security.membershipprovider.applicationname.aspx

那麼你應該能夠做你想做的。

這裏是上述程序的簽名:

ALTER PROCEDURE [dbo].[aspnet_Membership_FindUsersByEmail] 
    @ApplicationName  nvarchar(256), 
    @EmailToMatch   nvarchar(256), 
    @PageIndex    int, 
    @PageSize    int 
AS 

提醒:

您不直接處理存儲過程。您使用MembershipProvider的API。

但這裏是簡單的測試。

MembershipProvider mp1 = Membership.Providers["App1"]; 
mp1.CreateUser (..................) 


MembershipProvider mp2 = Membership.Providers["App2"]; 
mp2.CreateUser (..................) /* use same email */ 

現在,我認爲您必須在您的配置文件中定義每個MembershipProvider(及其名稱)。

但這裏是一個MSDN鏈接:

http://msdn.microsoft.com/en-us/library/system.web.security.membershipprovidercollection.item.aspx

+0

那麼,現在的用戶都在'WebPortal'之下。這是我在桌上唯一的應用程序。我不得不將這些移動到適當的應用程序。如果我將它們移動到基於公司的單獨應用程序,它會引起問題嗎?此外,是否允許用戶通過不同的應用程序註冊相同的電子郵件? – ErocM

+0

當然,只要讓他們感動,我就會努力工作,但我想確保我的理論是如何實現這一目標。一旦我將它們移動到新的寄存器中,這將幫助我糾正程序,但它並不真正回答我原來的問題。 – ErocM

+0

aspnet_User的唯一約束是(ApplicationId,UserId)。您必須手動「重寫」ApplicationId ...並且不要忘記dbo.aspnet_Membership中有一個。如果你1.創建應用程序,和(2)。重寫這兩個表的ApplicationId,你應該沒問題。但這是我最好的猜測。 – granadaCoder