Я пытаюсь сделать доступ к службе, только если клиент аутентифицирован, и я поместил атрибут Authenticate, но он не работал, потому что когда я могу получить доступ к службе без проверки подлинности. Я поместил атрибут Authenticate перед запросом DTO, верхней частью службы и перед действием. Вот код сервиса Я хочу, чтобы обеспечитьАтрибут ServiceStack Authenticate не проверяет подлинность пользователя
[Authenticate]
public class HelloService : Service
{
public const string HelloServiceCounterKey = "HelloServiceCounter";
public object Any(HelloRequest request)
{
var userSession = SessionAs<AppHost.CustomUserSession>();
Session.Set(HelloServiceCounterKey, Session.Get<int>(HelloServiceCounterKey) + 1);
var roles = string.Join(", ", userSession.Roles.ToArray());
return new HelloResponse { Result = "Hello, " + request.Name + ", your role(s): " + roles };
}
}
У меня есть это в моем AppHost Настройка (Funq.Container контейнер)
Plugins.Add(new AuthFeature(
() => new CustomUserSession(),
new[] { new CustomCredentialsAuthProvider() }
));
public class CustomUserSession : AuthUserSession
{
public string CompanyName { get; set; }
}
public class CustomCredentialsAuthProvider : CredentialsAuthProvider
{
public override bool TryAuthenticate(IServiceBase authService, string userName, string password)
{
if (!Membership.ValidateUser(userName, password)) return false;
var session = (CustomUserSession)authService.GetSession(false);
session.CompanyName = "Company from DB";
session.UserAuthId = userName;
session.IsAuthenticated = true;
// add roles
session.Roles = new List<string>();
if (session.UserAuthId == "admin") session.Roles.Add(RoleNames.Admin);
session.Roles.Add("User");
return true;
}
}
Когда доступ на службу в линии
var roles = string.Join(", ", userSession.Roles.ToArray());
obviosly return NULL, потому что не были подвергнуты апробации.
Что необходимо сделать для аутентификации атрибута в этом случае?
Я настроил своего провайдера аутентификации как CustomCredentialsAuthProvider, и я добавил код к исходному вопросу @pedro надеюсь, что вы можете мне помочь –
все еще не работает, я до сих пор могу получить доступ к сервису без проверки подлинности @Pedro –
взглянуть на мое обновление –