成功注册随机用户后,该应用程序未进行身份验证登录。在defaulf登录视图中输入信息后,我什至无法登录。它只是将我定向到“主页/索引视图”,仅此而已。 我在FilterConfig和管理员角色中添加了AuthorizeAttribute
我试图创建一个普通的新示例ASP.NET MVC 5应用程序,只是为了测试默认日志记录,但是它在那里也不起作用。与以前的应用程序一样,它始终将我定向到“首页/索引”页面
// GET: /Account/Login
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
//
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Nieprawidłowa próba logowania.");
return View(model);
}
}
[AllowAnonymous]
public ActionResult Register()
{
return View();
}
//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
//var roleStore = new RoleStore<IdentityRole>(new ApplicationDbContext());
//var roleManager = new RoleManager<IdentityRole>(roleStore);
//await roleManager.CreateAsync(new IdentityRole { Name = "Admin" });
//await UserManager.AddToRoleAsync(user.Id, "Admin");
await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
return View(model);
}
我想知道如何成功登录用户。
答案 0 :(得分:0)
看看您的代码,有人会想知道它是如何没有引发错误或构建是如何完成的。
在您的Account controller
Login
[HttpPost]中,下面的行不存在。
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
您需要在声明变量后添加此行
switch (result)
{
//ommited block of code
}
答案 1 :(得分:0)
如果有人遇到此问题,请确保模型视图必须匹配(每个属性都应在视图中呈现),除非该属性是默认值。以及检查属性类型。
接下来需要检查控制器和视图,确保传递的属性数量正确。
不匹配的映射会导致操作失败。
主要是这样可以解决问题。