你應該有一個單一的LoginController。它只能有一個Authorize(string email, string password)
操作。你在哪裏做的「拆分」是通過創建一個MembershipProviderFactory
(或任何你想命名它),返回一個IMembershipProvider
接口到你的控制器。工廠可以通過查詢數據庫返回正確類型的MembershipProvider
。
public class SellerMembershipProvider : IMembershipProvider
{
public bool Authorize(string email, string password)
{
// validate seller
}
}
public class BuyerMembershipProvider : IMembershipProvider
{
public bool Authorize(string email, string, password)
{
// validate buyer
}
}
public class MembershipProviderFactory
{
public IMembershipProvider Create(string email)
{
if(/* email is in seller database*/)
{
return new SellerMembershipProvider();
}
else
{
return new BuyerMembershipProvider();
}
}
}
public class LoginController : Controller
{
private readonly MembershipProviderFactory _providerFactory = new MembershipProviderFactory();
public ActionResult Authenticate(string email, string password)
{
IMembershipProvider provider = _providerFactory.Create(email);
if(provider.Authorize(email, password))
{
return View("MyAccount");
}
else
{
return View("Login");
}
}
}
不錯,簡單 - 工作的一種享受。謝謝! –