我想将 CAPTCHA 字段放入身份验证提交表单api/auth/credentials
中。
因此,现在表单将需要包含除username、password和rememberme之外的验证码字段。
然后,我将检查存储验证码图像答案的会话与提交的验证码结果的表单。
我的问题是,我需要覆盖 SS 源代码的哪些部分才能正确执行?
我的感觉是我应该一开始就考虑覆盖和自定义 CredentialsAuthProvider 类?
我想将 CAPTCHA 字段放入身份验证提交表单api/auth/credentials
中。
因此,现在表单将需要包含除username、password和rememberme之外的验证码字段。
然后,我将检查存储验证码图像答案的会话与提交的验证码结果的表单。
我的问题是,我需要覆盖 SS 源代码的哪些部分才能正确执行?
我的感觉是我应该一开始就考虑覆盖和自定义 CredentialsAuthProvider 类?
这是一个快速的方法:
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
};
}
期待看到你们向我展示更优雅/高效/可扩展的方法。