2013-05-07 156 views
1

我想将验证码字段放入验证提交表单api/auth/credentialsServiceStack使用验证码验证验证

所以,现在的形式将需要从用户名密码了rememberMe除了含有验证码场。

然后,我将检查存储验证码图像的答案与提交验证码结果的表单的会话。

我的问题是,SS源代码的哪些部分是否需要重写才能正确执行?

我的感觉是,我应该看看重写和自定义CredentialsAuthProvider类的开始?

回答

1

这里是一个匆匆的方式来做到这一点:

public ExtDeskResponse Post(MyAuth req) { 
     //Captcha Validation 
     var valid = req.Captcha == base.Session.Get<Captcha>("Captcha").result; 
     //SS Authentication 
     var authService = AppHostBase.Instance.TryResolve<AuthService>(); 
     authService.RequestContext = new HttpRequestContext(
      System.Web.HttpContext.Current.Request.ToRequest(), 
      System.Web.HttpContext.Current.Response.ToResponse(), 
      null); 
     var auth = string.IsNullOrWhiteSpace(
      authService.Authenticate(new Auth { 
       UserName = req.UserName, 
       Password = req.Password, 
       RememberMe = req.RememberMe, 
      }).UserName); 
     if (valid && auth) { 
      //...logic 
     } 
     return new MyAuthResponse() { 
      //...data 
     }; 
    } 

期待看到你们让我更优雅/有效的/可扩展的方式来做到这一点。