Кажется, я не могу получить очень простой пример входа с использованием cookie для работы с MVC5 и OWIN.

Я пытался намочить ноги в ASP.net MVC 5 на 2013 год, но до сих пор мне не удавалось заставить даже самую базовую аутентификацию работать правильно.

Я читал вокруг в течение последних нескольких дней, и я наконец наткнулся на (http://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middleware-for-the-asp-net-developer/) который, казалось, дал самый простой простой пример, который я мог найти. Итак, я попробовал это, но все равно не получается создать сеанс для пользователя.

Вот мой конфиг cookie

public void ConfigureAuth(IAppBuilder app)
    {
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/FooBar")
        });
    }

Вот мой основной пользовательский логин.

public class LoginController : ApiController
    {
        private IAuthenticationManager Authentication
        {
            get { return Request.GetOwinContext().Authentication; }
        }

        // POST api/login
        public void Post([FromBody]LoginInfo email)
        {
            var fooBar = Authentication.User;
            var claims = new List<Claim>
            {
                new Claim(ClaimTypes.Name, "name")
                ,new Claim(ClaimTypes.Email, "[email protected]")
                ,new Claim(ClaimTypes.Role, "Foo")
            };
            var identity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

            Authentication.SignIn(new AuthenticationProperties() { IsPersistent = true }, identity);
        }
    }

Если бы я дважды нажал на API входа в систему, я бы ожидал, что во второй раз переменная fooBar будет установлена для пользователя, который помечен как аутентифицированный, но когда я проверяю его, он просто говорит, что не аутентифицирован, и не имеет любой из претензий я бы ожидал.

Я также попытался создать базовую службу, чтобы просто проверить, была ли она аутентифицирована на случай, если я неправильно понял, как она работает, но это также не помогает. Если я пытаюсь пойти на это, он говорит, что я не аутентифицирован, он не перенаправляет меня так, как я думал.

public class TestController : ApiController
    {
        [Authorize(Roles = "Foo")]
        public int Get()
        {
            return 1;
        }
    }

Я уверен, что мне просто не хватает некоторого базового, но до сих пор, независимо от того, с чем я возился, и независимо от различных руководств и советов, которые я видел в Интернете, ничто не могло заставить работать даже этот простой сценарий. Есть идеи, что я делаю не так?

Ответы на вопрос(2)

Ваш ответ на вопрос