我是ServiceStack的新手,想知道如何在身份验证期间捕获表中的登录(成功和失败的尝试)信息,并想知道你们之前是否有人做过这类工作。我还读到了一个名为RequestLogger的功能(请参阅ServiceStack Request Logger并且不知道目前要走哪条路。我还读到了使用过滤器来拦截来电。任何指针都会受到赞赏
答案 0 :(得分:2)
您需要查看Session or Auth Events以执行不同Session / Auth事件的自定义逻辑。
但是失败的尝试没有自定义事件,这取决于使用的是哪个身份验证提供程序,例如OAuth提供商重定向用户向网址添加#f=ErrorType
后缀以指示失败的内容。您可以通过为FailedRedirectUrlFilter
分配自定义过滤器来捕获此重定向,例如:
Plugins.Add(AuthFeature(() => new AuthUserSession(),
new IAuthProvider[]
new FacebookAuthProvider(AppSettings) {
FailedRedirectUrlFilter = (authProvider, url) => {
var log = LogManager.GetLogger(authProvider.GetType());
log.Info("Failed OAuth login attempt, redirecting to: ", url);
return url;
}
}
});
使用已注册的Logging provider记录邮件。
虽然失败的凭据验证登录会引发UnAuthorized
HTTP错误,您可以使用自定义Global Response Filter处理该错误,例如:
this.GlobalResponseFilters.Add((req, res, response) => {
var error = response as HttpError;
if (error != null && req.Dto.GetType() == typeof(Authenticate))
{
//...
}
});