多个Membershipprovider为一个应用程序

问题描述:

我有一个网站,使用SqlMembershiprovider。它是一个网上商店。用户使用他的用户名和密码登录。多个Membershipprovider为一个应用程序

除此之外,还有一个控制器负责显示从另一个系统导入的订单的交货详细信息。这些订单与成员系统中的用户没有关系。要显示交货详细信息,您必须提供订单号和打印在发票上的令牌。

要允许访问,我想实现一个自定义membershiprovider,仅用于此单个控制器。对一个应用程序使用2个不同的提供者是否可行?

编辑

有一对夫妇的,一旦他提供的订单号码和令牌的用户可以访问网页。

我不认为你需要一个单独的会员供应商。只需将该操作和相关操作公开(不要使用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

+0

这确实很有趣。它还不是解决方案,但至少我发现可以配置2个提供商。谢谢! – 2009-10-08 13:25:31