Wydaje mi się, że nie mogę uzyskać bardzo podstawowego przykładu logowania do plików cookie, aby pracować z MVC5 i OWIN

Próbowałem zmoczyć stopy z ASP.net MVC 5 na rok 2013, ale jak dotąd nie udało mi się uzyskać nawet najbardziej podstawowego uwierzytelnienia.

Czytałem przez ostatnie kilka dni i wreszcie natknąłem się na (http://brockallen.com/2013/10/24/a-primer-on-owin-cookie-authentication-middleware-for-the-asp-net-developer/) który wydawał się najbardziej podstawowym prostym przykładem, jaki mogłem znaleźć. Spróbowałem tego, ale nadal nie wydaje się, aby faktycznie tworzył sesję dla użytkownika.

Oto moja konfiguracja plików cookie

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

Oto mój podstawowy niestandardowy login.

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);
        }
    }

Gdybym dwukrotnie trafił na API, spodziewałbym się, że drugi raz zmienna fooBar zostanie ustawiona na użytkownika, który jest oznaczony jako uwierzytelniony, ale gdy go sprawdzę, po prostu mówi, że nie jest uwierzytelniony i nie ma którekolwiek z roszczeń, których oczekiwałbym.

Próbowałem również utworzyć podstawową usługę, aby sprawdzić, czy została ona uwierzytelniona, na wypadek, gdyby źle zrozumiałem, jak to działa, ale to również się nie udaje. Jeśli spróbuję do niego przejść, mówi, że nie jestem uwierzytelniony, nie przekierowuje mnie tak, jak myślałem.

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

Jestem pewien, że po prostu brakuje mi jakiegoś podstawowego, ale jak dotąd bez względu na to, z czym się bawiłem i niezależnie od różnych poradników i porad, które widziałem w Internecie, nic nie było w stanie uzyskać nawet tego prostego scenariusza. Jakieś pomysły na to, co robię źle?

questionAnswers(2)

yourAnswerToTheQuestion