ServiceStack 和 OAuth2

ServiceStack and OAuth2

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

基本上,我想控制 Api 访问权限,这样并不是每个拥有 google 帐户的人都可以使用它。

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

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