ServiceStack和OAuth2

时间:2015-01-20 13:58:09

标签: servicestack

如何使用现有的servicestack oauth2提供商,例如google,并且只将其限制为我为用户创建的一个帐户?

基本上,我想要检查Api访问权限,以便所有拥有Google帐户的人都可以使用它。

1 个答案:

答案 0 :(得分:1)

您可以使用CustomValidationFilter添加自己的自定义验证,返回 null响应将取消身份验证并返回所需的错误响应,例如:

Plugins.Add(new AuthFeature(() => new CustomUserSession(),
    new IAuthProvider[] {
        new GoogleOAuth2Provider(appSettings) { 
            CustomValidationFilter = authCtx => {
                if (!AllowUser(authCtx.Session, authCtx.AuthTokens)) {
                    var url = authCtx.AuthProvider.GetReferrerUrl(
                        authCtx.Service, authCtx.Session
                    ).AddParam("f","GoogleOAuthNotAllowed");
                    return authCtx.Service.Redirect(url);
                }
                return null; //Allow Authentication through
            }
        }, 
    }));