2011-03-20 80 views
5

我想制作一个Web应用程序,其中身份验证方法是完全可配置的(可能是openid,它可能是Windows身份验证,也可能是其他任何内容)。是否有一个框架在ASP.NET MVC中抽象认证?

我宁愿只是改变web.config中的一个设置来获得不同的auth解决方案。该应用程序需要一个Principal/Identity以某种用户名(某些其他用户详细信息可能很好,但此时不需要)。

有什么好的框架可以帮助我,还是应该自己创建?

回答

3

您是否熟悉内置的ASP.NET Membership功能?它可以与ASP.NET MVC或WebForms一起使用。您可以根据需要插入其他提供者。有一个OpenID提供商可以在CodePlex上找到 - 虽然我没有使用它。

+0

是的,我知道它,但它只提供了一个最简单的部分 - 模型,而我对完整的解决方案感兴趣。还有我上次用它时,我记得碰到API问题。但我会再看一遍,谢谢。 – 2011-03-21 00:11:35

+0

是的,我认为这是最好的方法。这就是我实现OpenID的方式 - 将DotNetOpenAuth与ASP.NET Membership结合起来非常简单直接。 – 2011-03-21 01:28:55

0

要扩展Ryan的答案:您可以创建一个继承自System.Web.Security.MembershipProvider(位于MVC3的System.Web.ApplicationServices库中)的类。要配置使用哪个提供商,你需要在你的web.config像提供以下项:

<!-- In configuration -> system.web --> 
<membership defaultProvider="ServicesMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="ServicesMembershipProvider" 
     type="APISite.Infrastructure.Web.Membership.ServicesMembershipProvider" 
     enablePasswordRetrieval="false" 
     enablePasswordReset="false" 
     requiresQuestionAndAnswer="false" 
     requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="5" 
     minRequiredPasswordLength="6" 
     minRequiredNonalphanumericCharacters="0" 
     passwordAttemptWindow="10" 
     applicationName="/"/> 
    </providers> 
</membership> 

您可以在本节中定义多个供应商,并设置defaultprovider你想要的时候使用一个。

相关问题