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
}
},
}));
如何使用现有的 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
}
},
}));