LogIn in Asp.Net Identity project

210 views Asked by At

I'm doing an Web Application based on Asp.Net, and the login system based on Identity Framework. The problem that I'm getting is a bit strange.

I run the application that takes me to the login page, I login (and redirected to the homepage) then if I logout and try to login again it keeps giving me the Login page instead the Home page, but if I do this second Login with a BreakPoint in the async call and then go step by step the login is done and I'm redirected to the Home page.

The code is:

[HttpPost]
        [AllowAnonymous]
        public async Task<ActionResult> LogIn(LogInModel model)
        {
            if (!ModelState.IsValid)
            {
                return View();
            }
         //BreakPoint
         var user = await userManager.FindAsync(model.Email, model.Password);

            if (user != null)
            {
                var identity = await userManager.CreateIdentityAsync(
                    user, DefaultAuthenticationTypes.ApplicationCookie);

                SignIn(user);

                return Redirect(GetRedirectUrl(model.ReturnUrl));
            }

            // user authN failed
            ModelState.AddModelError("", "Invalid email or password");
            return View();
        }

     private string GetRedirectUrl(string returnUrl)
    {
        if (string.IsNullOrEmpty(returnUrl) || !Url.IsLocalUrl(returnUrl))
        {
            return Url.Action("index", "home");
        }

        return returnUrl;
    }

    private async Task SignIn(IdentityUser user)
    {
        var identity = await userManager.CreateIdentityAsync(
            user, DefaultAuthenticationTypes.ApplicationCookie);
        GetAuthenticationManager().SignIn(identity);
    }

    private IAuthenticationManager GetAuthenticationManager()
    {
        var ctx = Request.GetOwinContext();
        return ctx.Authentication;
    }

    public ActionResult LogOut()
    {
        var ctx = Request.GetOwinContext();
        var authManager = ctx.Authentication;
        Session.Abandon();

        authManager.SignOut("ApplicationCookie");
        return RedirectToAction("LogIn", "Login");
    }
0

There are 0 answers