使用ServiceStack审核登录/注销事件

时间:2015-11-26 19:22:16

标签: servicestack audit-logging

我是ServiceStack的新手,想知道如何在身份验证期间捕获表中的登录(成功和失败的尝试)信息,并想知道你们之前是否有人做过这类工作。我还读到了一个名为RequestLogger的功能(请参阅ServiceStack Request Logger并且不知道目前要走哪条路。我还读到了使用过滤器来拦截来电。任何指针都会受到赞赏

1 个答案:

答案 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))
    {
        //...
    }
});