我是 ServiceStack 的新手,想知道如何在身份验证期间在表中捕获登录(成功和失败的尝试)信息,并想问一下你们之前是否做过此类工作。我还阅读了一个名为 RequestLogger 的功能(请参阅ServiceStack 请求记录器,目前不确定该走哪条路。我还阅读了有关使用过滤器拦截呼叫的信息。任何指针将不胜感激
问问题
213 次
1 回答
2
您需要查看Session 或 Auth Events以针对不同的 Session/Auth 事件执行自定义逻辑。
但是没有针对失败尝试的自定义事件,这些事件根据使用的身份验证提供程序而有所不同,例如,OAuth 提供程序重定向用户,将#f=ErrorType
后缀添加到 url 以指示失败的原因。您可以通过将自定义过滤器分配给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记录一条消息。
虽然失败的 Credentials Auth 登录将引发UnAuthorized
HTTP 错误,但您可以使用自定义Global Response Filter处理该错误,例如:
this.GlobalResponseFilters.Add((req, res, response) => {
var error = response as HttpError;
if (error != null && req.Dto.GetType() == typeof(Authenticate))
{
//...
}
});
于 2015-11-27T01:24:03.647 回答