Идентификационные данные входа успешны, но просмотр шоу не прошел проверку подлинности - PullRequest
0 голосов
/ 12 марта 2019

Мне дали проект MVC5, использующий идентификацию asp.net для отладки.Он использует точный шаблон, который VS генерирует при создании нового проекта MVC5.

result = await _signInManager.PasswordSignInAsync(user.UserName, model.Password, model.RememberMe, shouldLockout: false);


switch (result)
{
    case SignInStatus.Success:
        user.LastLoginDate = DateTime.Now;                    
        this._userManager.Update(user);
        return RedirectToLocal(returnUrl);

    case SignInStatus.LockedOut:
        ModelState.AddModelError("", "Your account is locked or has been deleted. If you wish to reactivate your account, please contact us and tell the email address associated with your account.");
        return View(model);

    case SignInStatus.RequiresVerification:
        _userManager.SendAccountConfirmToken(user);
        ModelState.AddModelError("", "You must verify your email address first. Please check your inbox for more instructions.");
        return View(model);

    case SignInStatus.Failure:
    default:
        ModelState.AddModelError("Password", "Incorrect E-mail address or Password.");
        return View(model);
}

В отладчике я вижу результат «Успех».Однако, на мой взгляд, вошедшая в систему проверка всегда показывает, что они вышли из системы:

@if (this.User.Identity.IsAuthenticated)
{
    //logged in user content
}

Никаких ошибок не было, и в прошлом проект входил в систему.

Как мне отладить это?Я предполагаю, что это должно быть проблема cookie, но я не получаю никакой ошибки.

Это в моем методе ConfigureAuth:

public void ConfigureAuth(IAppBuilder app)
{
    // Configure the db context, user manager and signin manager to use a single instance per request        
    app.CreatePerOwinContext(() => new AppDbContext(new SqlConnectionStringProvider())); 
    app.CreatePerOwinContext(() => new ApplicationUserManager(new SqlConnectionStringProvider())); 
    app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

    // Enable the application to use a cookie to store information for the signed in user
    // and to use a cookie to temporarily store information about a user logging in with a third party login provider
    // Configure the sign in cookie
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/login"),
        Provider = new CookieAuthenticationProvider
        {
            // Enables the application to validate the security stamp when the user logs in.
            // This is a security feature which is used when you change a password or add an external login to your account.  
            OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                validateInterval: TimeSpan.FromMinutes(30),
                regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)),
            OnException = context => { }
        }
    });            
    app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

}

В проекте используется Ninject для IOC.Это привязка для менеджера входа

kernel.Bind<ApplicationSignInManager>().ToMethod(c => HttpContext.Current.GetOwinContext().Get<ApplicationSignInManager>()).InSingletonScope();

Как мне отладить, почему в представлениях не отображается пользователь, вошедший в систему, когда signinmanager возвращает успех?

...