2009-10-08 80 views
1

我有一個網站,使用SqlMembershiprovider。它是一個網上商店。用戶使用他的用戶名和密碼登錄。多個Membershipprovider爲一個應用程序

除此之外,還有一個控制器負責顯示從另一個系統導入的訂單的交貨詳細信息。這些訂單與成員系統中的用戶沒有關係。要顯示交貨詳細信息,您必須提供訂單號和打印在發票上的令牌。

要允許訪問,我想實現一個自定義membershiprovider,僅用於此單個控制器。對一個應用程序使用2個不同的提供者是否可行?

編輯

有一對夫婦的,一旦他提供的訂單號碼和令牌的用戶可以訪問網頁。

回答

1

我不認爲你需要一個單獨的會員供應商。只需將該操作和相關操作公開(不要使用AuthorizeAttribute進行修飾)。然後要求提供的訂單號和發票令牌有效。也就是說,如果您有訂單號並且它是關聯的令牌,那麼您將顯示交付詳情。您可以通過驗證它們是否與其他系統提供的數據相匹配來進行檢查。

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult DeliveryDetails(string orderNumber, string invoiceToken) 
{ 
     var order = otherDb.Orders 
         .Where(o => o.OrderNumber == orderNUmber 
             && o.InvoiceToken == invoiceToken) 
         .SingleOrDefault(); 

     if (order == null) 
     { 
      return View("Error"); 
     } 

     return View(order); 
} 
+0

的問題是,我有幾個問題需要這個logininformation頁面。我真的不得不有一個身份驗證cookie。我更新我的問題以包含此信息。 – 2009-10-08 12:45:43

+0

我想我會根據會話變量而不是cookie來做到這一點。創建一個自定義操作篩選器屬性,用於檢查用戶是否被授權,或者他們是否有會話標誌,指示他們具有有效的訂單/發票令牌。這將幫助您避免必須使用特殊角色來區分正常,經過身份驗證的用戶與這些「訪客」,並允許您繼續在其他地方使用默認的AuthorizeAttribute。 – tvanfosson 2009-10-08 13:25:36

相關問題