Я пытаюсь написать свою собственную аутентификацию, поэтому я унаследовал 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 исключение, когда я звоню в службу тестирования ??????????