Сеанс Servicetack является нулевым только при использовании JWT - PullRequest
0 голосов
/ 19 февраля 2019

Сбой на SessionAs в baseservice в Postman, когда я аутентифицируюсь через JWT.Но когда я использую Basic Auth, все работает нормально.Кто-нибудь знает почему?

Apphost

    Plugins.Add(new AuthFeature(() => new CustomUserSession(),
        new IAuthProvider[]
        {
            new BasicAuthProvider(),                    //Sign-in with HTTP Basic Auth
            new JwtAuthProvider(AppSettings) {
                AuthKeyBase64 = AppSettings.GetString("jwt.auth.key"),
                RequireSecureConnection = false,
                }, //JWT TOKENS
            new CredentialsAuthProvider(AppSettings)
        })
    {

Открытый класс BaseService ServiceBase: Service {

        public IUserAuth UserAuth
        {
            get
            {
                var session = SessionAs<AuthUserSession>();
                return AuthRepository.GetUserAuth(session.UserAuthId);   
            }
        }

    }

1 Ответ

0 голосов
/ 19 февраля 2019

Ваш SessionAs<T> должен соответствовать типу UserSession, зарегистрированному в плагине AuthFeature, который является CustomUserSession.

JwtAuthProvider * из ServiceStack заполняет UserAuthId в * 1009 JWT.* Полезная нагрузка JWT, поэтому вы должны проверить необработанные HTTP-заголовки, чтобы убедиться, что отправляется токен JWT, либо в HTTP-заголовке Authorization как BearerToken, так и в ss-tok Cookie.Если он отправляется, вы декодируете JWT, отправленный в https://jwt.io, чтобы убедиться, что он содержит действительную полезную нагрузку, в этом случае он содержит свойство "sub" в полезной нагрузке JWT, содержащей UserAuthId аутентифицируемого пользователя.

...