代码之家  ›  专栏  ›  技术社区  ›  Chris Wallis

如何确定使用了哪个ServiceStack AuthProvider

  •  2
  • Chris Wallis  · 技术社区  · 7 年前

    获取 https://example.com/resource/42?apikey=abc123etc

    它是我们的系统拥有的四个身份验证提供者之一。

    我们的AppHost配置现在如下所示:

    _appHost.Plugins.Add(new AuthFeature(
        () => new AuthUserSession(), 
            new IAuthProvider[] {
                new CustomApiKeyAuthProvider(),
                new CredentialsAuthProvider(),
                new BasicAuthProvider(), 
                new JwtAuthProviderReader(_appHost.AppSettings)
                {
                    AuthKey = Encoding.UTF8.GetBytes(OurEnvironment.TokenSecret),
                }
        }));
    

    我们经过身份验证的服务调用仅标记为:

    [Authenticate]
    

    我遇到的问题是,当我通过发出类似于上面的请求来测试它时,它不会尝试使用新的提供者。我刚得到401授权。

    是请求决定了使用哪个提供者,还是ServiceStack只是通过列表工作?

    谢谢

    1 回复  |  直到 7 年前
        1
  •  2
  •   mythz    7 年前

    首先,您需要使用 [Authenticate] 属性

    这要求只有经过身份验证的用户才能访问该服务。用户可以使用 ,即它不是特定于请求的。

    您可以从中找出用户用于进行身份验证的身份验证提供程序 AuthProvider 属性,例如:

    var authProviderUsed = base.Request.GetSession().AuthProvider;
    

    您还可以通过指定 AuthProvider Name 在:

    [Authenticate(Provider="credentials")]