我有一个使用 SqlMembershipprovider 的站点。它是一个网店。用户在那里使用他的用户名和密码登录。
除此之外,还有一个控制器负责显示从另一个系统导入的订单的交货详细信息。这些订单与会员系统中的用户没有任何联系。要显示交货详细信息,您必须提供订单号和印在发票上的令牌。
为了允许访问,我想实现一个仅用于此单个控制器的自定义成员资格提供程序。为一个应用程序使用 2 个不同的提供程序是否可行?
编辑
提供订单号和令牌后,用户可以访问几个页面。
我有一个使用 SqlMembershipprovider 的站点。它是一个网店。用户在那里使用他的用户名和密码登录。
除此之外,还有一个控制器负责显示从另一个系统导入的订单的交货详细信息。这些订单与会员系统中的用户没有任何联系。要显示交货详细信息,您必须提供订单号和印在发票上的令牌。
为了允许访问,我想实现一个仅用于此单个控制器的自定义成员资格提供程序。为一个应用程序使用 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);
}