Мне дали проект 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 возвращает успех?