MVC 3中的身份验证:该走哪条路?
本文关键字:条路 身份验证 MVC | 更新日期: 2023-09-27 17:50:20
我已经编写了一组接口和相关的类来使用实体框架验证用户,而不是使用内置的和相当过时的ASP提供的分类过程。. NET成员资格提供程序。
用我的MVC 3应用程序实现我的AuthenticationService的最好方法是什么?我应该编写一个自定义提供程序并覆盖会员提供程序吗?这看起来很简单,但我真的不喜欢微软给我们的供应商工厂的工厂模型。
想法吗?
我基于MVC 2自带的接口编写了自己的会员服务。由于我的应用程序中的授权比基于角色的开箱即用的东西要复杂一些,所以我不能使用System.Web.Security.MembershipProvider
。我仍然使用FormsAuthentication来跟踪登录的用户。你失去了能够使用[Authorize(Roles="Admin")]
和其他框架位,但就像我说的,我的应用程序不使用基于角色的验证。
public class MyMembershipService : IMembershipService
{
private readonly IUserRepository userRepository;
public MyMembershipService(IUserRepository userRepository)
{
this.userRepository = userRepository;
}
public virtual bool IsValid(string username, string password)
{
var user = userRepository.FindByUsername(username);
return user != null && user.PasswordMatches(password);
}
public virtual bool AllowedToLogIn(string username)
{
var user = userRepository.FindByUsername(username) ?? new User();
return user.AllowedToLogIn();
}
}
现在可能是研究访问控制服务(ACS) 2.0的好时机,它为您提供了SSO和集中身份验证。它刚刚进入生产版本,在年底之前是免费的。与MVC3一起工作很好,您需要获得Windows身份基础。网上有很多关于如何整合它的资源。很好的入门博客,宣布Windows Azure AppFabric缓存和访问控制的商业版本。