1

我想将 CAPTCHA 字段放入身份验证提交表单api/auth/credentials中。

因此,现在表单将需要包含除usernamepasswordrememberme之外的验证字段。

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

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

我的感觉是我应该一开始就考虑覆盖和自定义 CredentialsAuthProvider 类?

4

1 回答 1

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
        }; 
    }

期待看到你们向我展示更优雅/高效/可扩展的方法。

于 2013-05-09T00:58:43.493 回答