2012-07-09 65 views
0

我想测试我的asp.net mvc3定制会员供应商。我似乎无法能够踏进任何代码 - 所有我想现在要做的是验证用户登录调试ASP.NET MVC3定制会员供应商

什么我迄今所做的是:

实施在abstact的MembershipProvider类:

public class SSDSMembershipProvider : MembershipProvider 
{ 
     public override bool ValidateUser(string username, string password) 
     { 
      return true; 
     } 

修改web.config中使用我的新供应商:

<membership defaultProvider="SSDSMembershipProvider"> 
     <providers> 
     <clear/> 
     <add name="SSDSMembershipProvider" type="MvcApplication6.Infrastructure.SSDSMembershipProvider" connectionStringName="ApplicationServices" 
      enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
      maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
      applicationName="/" /> 
     </providers> 
    </membership> 

新增的授权将其归因于约HomeController的:

[Authorize] 
    public ActionResult About() 
    { 
     return View(); 
    } 

授权属性是否导致调用ValidateUser方法?如果我在ValidateUser上放置一个断点,它不会进入那里,并且浏览器直接进入登录页面。我在这里采取了正确的方法吗?

+2

'Authorize'只是将用户重定向到登录页面,一旦用户放入他/她的凭证并提交登录表单,就会调用验证用户。 – 2012-07-09 08:29:14

+0

您是否设置了您的 ...,在? – tschmit007 2012-07-09 08:31:32

+0

@Furqan啊谢谢至少我现在知道CustomMembership提供程序已正确配置 - 但它仍然不会在我登录后调用ValidateUser。我不打算使用表单身份验证 - 我实际上需要使用来自处理用户登录的应用程序的http请求的一部分传递的用户名和密码。 – woggles 2012-07-09 08:43:29

回答

1

Authorize只是将用户重定向到登录页面,一旦用户放入他/她的凭证并提交登录表单,就会调用验证用户。

2

您是否更改了AccountController中的代码?

您必须将Method“LogOn”中的代码从Mebership.ValidateUser更改为SSDSMembershipProvider-Class的新实例,然后调用ValidateUser方法。

+0

nope我没有改变控制器 - 我现在意识到,在登录时调用了ValidateUser,随后调用了FromsAuthentication.SetAuthCookie。我认为每当[Authorize]属性出现时都会调用ValidateUser。 – woggles 2012-07-09 09:21:47

+0

http://www.brianlegg.com/post/2011/05/09/Implementing-your-own-RoleProvider-and-MembershipProvider-in-MVC-3.aspx这会帮助你! :) – davee 2012-07-09 09:25:39

+0

很好的链接,谢谢! – woggles 2012-07-09 09:28:07