我想制作一个Web应用程序,其中身份验证方法是完全可配置的(可能是openid,它可能是Windows身份验证,也可能是其他任何内容)。是否有一个框架在ASP.NET MVC中抽象认证?
我宁愿只是改变web.config中的一个设置来获得不同的auth解决方案。该应用程序需要一个Principal
/Identity
以某种用户名(某些其他用户详细信息可能很好,但此时不需要)。
有什么好的框架可以帮助我,还是应该自己创建?
我想制作一个Web应用程序,其中身份验证方法是完全可配置的(可能是openid,它可能是Windows身份验证,也可能是其他任何内容)。是否有一个框架在ASP.NET MVC中抽象认证?
我宁愿只是改变web.config中的一个设置来获得不同的auth解决方案。该应用程序需要一个Principal
/Identity
以某种用户名(某些其他用户详细信息可能很好,但此时不需要)。
有什么好的框架可以帮助我,还是应该自己创建?
您是否熟悉内置的ASP.NET Membership功能?它可以与ASP.NET MVC或WebForms一起使用。您可以根据需要插入其他提供者。有一个OpenID提供商可以在CodePlex上找到 - 虽然我没有使用它。
要扩展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
你想要的时候使用一个。
是的,我知道它,但它只提供了一个最简单的部分 - 模型,而我对完整的解决方案感兴趣。还有我上次用它时,我记得碰到API问题。但我会再看一遍,谢谢。 – 2011-03-21 00:11:35
是的,我认为这是最好的方法。这就是我实现OpenID的方式 - 将DotNetOpenAuth与ASP.NET Membership结合起来非常简单直接。 – 2011-03-21 01:28:55