1

Я пытаюсь написать свою собственную аутентификацию, поэтому я унаследовал CredentialsAuthProvider и переопределил метод Authenticate. Auth работает нормально, также когда я вызываю другую службу, я могу видеть все данные, которые я сохранил в сеансе.ServiceStack, атрибут Authenticate

Проблема: когда я пытаюсь добавить атрибут Authenticate и вызывать его с клиента, он переходит и выдает исключение Unauthorized, даже если я хочу использовать запрошенную роль.

сервис Auth является:

public class CustomCredentialsAuthProvider : CredentialsAuthProvider 
{ 
    public override bool TryAuthenticate(IServiceBase authService, string userName, string password) 
    { 
     return true; 
    } 

    public override object Authenticate(IServiceBase authService, IAuthSession session, Auth request) 
    { 

     session.FirstName = "Name"; 
     //... 
     session.Authenticate = true; 
     session.UserName = request.UserName; 
     session.Roles = new List<string>; 
     session.Roles.Add("admin") 
     //.... 
     authService.SaveSession(session, SessionExpiry); 

     // Return custom object 
     return new UserAuthResponse { SessionId = session.Id ......}; 

    } 

AppHost является:

public override void Configure(Container container) 
{ 
    Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { 
      new CustomCredentialsAuthProvider() 
     })); 
    Plugins.Add(new RegistrationFeature()); 

    container.Register<ICacheClient>(new MemoryCacheClient()); 
    var userRep = new InMemoryAuthRepository(); 
    container.Register<IUserAuthRepository>(userRep); 


} 

и эксплуатационное испытание:

[Authenticate] 
public class TestService : Service { 
    public object Any(UserRequest request) { 

     return new UserResponse{Name = request.Name}; 
    } 
} 

Это не реальный код, так что извините за синтаксической ошибки!)))) Но идея такая же! Помогите мне пожалуйста, что не так, почему я получил Unauthorized исключение, когда я звоню в службу тестирования ??????????

ответ

2

Когда я имел этот вопрос, я должен был создать атрибут пользовательского AUTHENTICATE [CustomAuthenticate] с руководством от этой сущности ->https://gist.github.com/joeriks/4518393

В методе AuthenticateIfBasicAuth я поставил поставщик использовать MyAuthProvider.Name вместо BasicAuthProvider.Name

Затем

[CustomAuthenticate] 
public class TestService : Service { 
    public object Any(UserRequest request) { 

     return new UserResponse{Name = request.Name}; 
    } 
} 

Также смотрите: http://joeriks.com/2013/01/12/cors-basicauth-on-servicestack-with-custom-authentication/

 Смежные вопросы

  • Нет связанных вопросов^_^