有没有办法指定在特定服务 class 上使用哪个 IAuthProvider 进行身份验证?
Is there a way to specify which IAuthProvider to use for authentication on a particular Service class?
我在同一个项目中有两个服务:
[Authenticate]
public class OnlyDoesBasicAuth : Service
{
}
[Authenticate]
public class OnlyDoesJwtAuth : Service
{
}
//AppHost
public override void Configure(Container container)
{
Plugins.Add(new AuthFeature(
() => new AuthUserSession(),
new IAuthProvider[]
{
new BasicAuthProvider(AppSettings),
new JwtAuthProvider(AppSettings)
}
)
{
HtmlRedirect = null
});
}
按照这种设置方式,我可以使用基本身份验证或使用有效的 Bearer 令牌进入 both 服务。我更愿意拥有它,以便只有一项服务可以执行一种身份验证方式。有没有办法指定提供者用于身份验证?
我不知道如何处理这个问题。我在想,也许有一种方法可以通过全局请求过滤器或类似的东西,但也许那不是可行的方法。我可以将项目分成两个项目,这肯定会奏效,但这不是我想要的处理方式。
我只是在寻找一种方法,让 OnlyDoesBasicAuth 仅在身份验证时使用 BasicAuthProvider,而 OnlyDoesJwtAuth 仅在同一项目中使用 JwtAuthProvider。任何和所有建议将不胜感激。
提前致谢。
通常,一旦您使用任何 Auth Provider 进行了身份验证,您就会在 ServiceStack 中的任何地方被视为经过身份验证的用户。
您可以限制访问,以便需要通过在 [Authenticate]
属性中指定 AuthProvider 名称对服务进行身份验证,例如:
[Authenticate(BasicAuthProvider.Name)]
public class OnlyDoesBasicAuth : Service
{
}
[Authenticate(JwtAuthProvider.Name)]
public class OnlyDoesJwtAuth : Service
{
}
或者,您可以在您的服务中验证他们需要通过特定的 Auth Provider 进行身份验证,例如:
if (SessionAs<AuthUserSession>().AuthProvider != JwtAuthProvider.Name)
throw HttpError.Forbidden("JWT Required");
我在同一个项目中有两个服务:
[Authenticate]
public class OnlyDoesBasicAuth : Service
{
}
[Authenticate]
public class OnlyDoesJwtAuth : Service
{
}
//AppHost
public override void Configure(Container container)
{
Plugins.Add(new AuthFeature(
() => new AuthUserSession(),
new IAuthProvider[]
{
new BasicAuthProvider(AppSettings),
new JwtAuthProvider(AppSettings)
}
)
{
HtmlRedirect = null
});
}
按照这种设置方式,我可以使用基本身份验证或使用有效的 Bearer 令牌进入 both 服务。我更愿意拥有它,以便只有一项服务可以执行一种身份验证方式。有没有办法指定提供者用于身份验证?
我不知道如何处理这个问题。我在想,也许有一种方法可以通过全局请求过滤器或类似的东西,但也许那不是可行的方法。我可以将项目分成两个项目,这肯定会奏效,但这不是我想要的处理方式。
我只是在寻找一种方法,让 OnlyDoesBasicAuth 仅在身份验证时使用 BasicAuthProvider,而 OnlyDoesJwtAuth 仅在同一项目中使用 JwtAuthProvider。任何和所有建议将不胜感激。
提前致谢。
通常,一旦您使用任何 Auth Provider 进行了身份验证,您就会在 ServiceStack 中的任何地方被视为经过身份验证的用户。
您可以限制访问,以便需要通过在 [Authenticate]
属性中指定 AuthProvider 名称对服务进行身份验证,例如:
[Authenticate(BasicAuthProvider.Name)]
public class OnlyDoesBasicAuth : Service
{
}
[Authenticate(JwtAuthProvider.Name)]
public class OnlyDoesJwtAuth : Service
{
}
或者,您可以在您的服务中验证他们需要通过特定的 Auth Provider 进行身份验证,例如:
if (SessionAs<AuthUserSession>().AuthProvider != JwtAuthProvider.Name)
throw HttpError.Forbidden("JWT Required");