Несанкционированное исключение, ServiceStack
Я хочу сделать сервис-стэк доступным только для авторизованных пользователей. это мой метод регистрации var authResponse = client.Post(new Authenticate
{
provider = CredentialsAuthProvider.Name, //= credentials
UserName = model.Username,
Password = model.Password,
RememberMe = true,
});
client.UserName = model.Username;
client.Password = model.Password;
Это метод входа
[HttpPost]
[ActionName("LogIn")]
public ActionResult Login(LogInModel model)
{
var authResponse = client.Post(new Authenticate
{
provider = CredentialsAuthProvider.Name, //= credentials
UserName = model.Username,
Password = model.Password,
RememberMe = true,
});
client.UserName = model.Username;
client.Password = model.Password;
return RedirectToAction("RefundPayment");
}
Apphost:
public override void Configure(Container container)
{
SetConfig(new HostConfig
{
HandlerFactoryPath = "api",
});
//Config examples
//this.Plugins.Add(new PostmanFeature());
//this.Plugins.Add(new CorsFeature());
//Set MVC to use the same Funq IOC as ServiceStack
ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container));
Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[] {
new BasicAuthProvider(), //Sign-in with HTTP Basic Auth
new CredentialsAuthProvider(), //HTML Form post of UserName/Password credentials
}));
Plugins.Add(new RegistrationFeature());
container.Register<ICacheClient>(new MemoryCacheClient());
var userRep = new InMemoryAuthRepository() ;
container.Register<IUserAuthRepository>(userRep);
}
Почему происходит это исключение, несмотря на то, что я аутентифицирую пользователя в методе входа? Должен ли я изменить код в AppHost? Благодарю.
1 ответ
Посмотрите в документации ServiceStack MVC пример того, как использовать аутентификацию ServiceStack из MVC, например, вместо использования ServiceClient вы можете вызывать ServiceStack's. AuthenticateService
непосредственно:
using (var authService = ResolveService<AuthenticateService>())
{
var response = authService.Authenticate(new Authenticate {
provider = CredentialsAuthProvider.Name,
UserName = userName,
Password = password,
RememberMe = true,
});
// add ASP.NET auth cookie
FormsAuthentication.SetAuthCookie(userName, true);
return Redirect(string.IsNullOrEmpty(redirect) ? "/" : redirect);
}
Затем вы можете использовать атрибуты аутентификации ServiceStack, чтобы ограничить доступ к вашей службе аутентифицированным клиентам.