Несанкционированное исключение, 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, чтобы ограничить доступ к вашей службе аутентифицированным клиентам.

Другие вопросы по тегам