我想将一个CAPTCHA字段放入身份验证提交表单api/auth/credentials
。
因此,现在除了用户名,密码和 rememberme 之外,表单还需要包含验证码字段
然后我将检查我在哪里存储验证码图像的答案与表格提交的验证码结果。
我的问题是,我需要覆盖SS源代码的哪个部分才能正确执行?
我的感觉是我应该查看覆盖并自定义CredentialsAuthProvider类?
答案 0 :(得分: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
};
}
期待看到你们向我们展示更优雅/高效/可扩展的方式。