ASP.NET MVC中是否有一个框架来抽象身份验证?

5
我想制作一个网络应用程序,其中身份验证方法是完全可配置的(可以是openid,也可以是Windows身份验证,也可以是其他任何东西)。
我更喜欢只需更改web.config中的单个设置即可获得不同的身份验证解决方案。该应用程序需要具有某种用户名的主体/标识(在此时不需要其他用户详细信息)。
是否有任何好的框架可以帮助我,还是我应该自己构建?
2个回答

3

你是否熟悉内置的ASP.NET Membership功能?它可以与ASP.NET MVC或WebForms一起使用。您可以根据需要插入其他提供程序。有一个在CodePlex上可用的OpenID提供程序,尽管我没有使用过。


是的,我知道它,但它只提供了最简单的部分——模型,而我对完整的解决方案感兴趣。上次我使用它时,我记得遇到了API问题。但我会再看一次,谢谢。 - Andrey Shchekin
是的,我认为这是最好的方法。这就是我实现OpenID的方式——将DotNetOpenAuth与ASP.NET Membership结合起来非常简单和直接。 - Maxim Zaslavsky

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设置为您想要在该时使用的提供程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接