C# 登录后不重定向到本地(索引)
登录后操作中的重定向有一个奇怪的问题。在登录页面上输入详细信息后,虽然它登录了用户,但不会重定向到主页。我在本地运行它,按下“登录”按钮后,它会停留在浏览器中继续加载(并且永远不会结束),关闭并重新运行应用程序后,我会看到用户登录,并且在我的部分视图中插入它时,我可以看到用户的名称。所以,这意味着登录可以工作,但重定向操作不起作用。有趣的是,当我注销用户时,它会成功地将他重定向到主页,但在登录时,不会 详情如下: LoginView模型C# 登录后不重定向到本地(索引),c#,asp.net-core,C#,Asp.net Core,登录后操作中的重定向有一个奇怪的问题。在登录页面上输入详细信息后,虽然它登录了用户,但不会重定向到主页。我在本地运行它,按下“登录”按钮后,它会停留在浏览器中继续加载(并且永远不会结束),关闭并重新运行应用程序后,我会看到用户登录,并且在我的部分视图中插入它时,我可以看到用户的名称。所以,这意味着登录可以工作,但重定向操作不起作用。有趣的是,当我注销用户时,它会成功地将他重定向到主页,但在登录时,不会 详情如下: LoginView模型 public int Id { get; set;
public int Id { get; set; }
[Required]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
public bool RememberMe { get; set; }
}
}
账户控制员
public class AccountController : Controller
{
private readonly UserManager<AdUser> _userManager;
private readonly SignInManager<AdUser> _signInManager;
private readonly SamirDbContext _samirDbContext;
public AccountController(UserManager<AdUser> userManager, SignInManager<AdUser> signInManager, SamirDbContext samirDbContext)
{
_userManager = userManager;
_signInManager = signInManager;
_samirDbContext = samirDbContext;
}
//Helper
private void AddErrors(IdentityResult result)
{
foreach (var error in result.Errors)
{
ModelState.AddModelError(string.Empty, error.Description);
}
}
[HttpGet]
[AllowAnonymous]
public IActionResult RegisterUser()
{
if (_signInManager.IsSignedIn(User))
{
return RedirectToAction(nameof(HomeController.Index), "Home");
}
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> RegisterUser(RegisterViewModel registerViewModel)
{
if (ModelState.IsValid)
{
registerViewModel.SiteUser = await _samirDbContext.SiteUsers.LastOrDefaultAsync();
AdUser adUser = await _userManager.FindByEmailAsync(registerViewModel.Email);
if (adUser != null)
{
ModelState.AddModelError("", "This user already exists");
}
else
{
adUser = new AdUser
{
UserName = registerViewModel.UserName,
Email = registerViewModel.Email,
SiteUserId = registerViewModel.SiteUser.Id,
Name = registerViewModel.FullName,
Phone = registerViewModel.Phone
};
if(registerViewModel.Password == registerViewModel.ConfirmPassword)
{
IdentityResult userResult = await _userManager.CreateAsync(adUser, registerViewModel.Password);
if (userResult.Succeeded)
{
IdentityResult result = await _userManager.AddToRoleAsync(adUser, RoleType.User.ToString());
if (result.Succeeded)
{
await _signInManager.SignInAsync(adUser, isPersistent: false);
return RedirectToAction(nameof(HomeController.Index), "Home");
}
else
{
ModelState.AddModelError("", "Rol yaranmadi");
}
}
else
{
ModelState.AddModelError("", "Şifrənin tərkibində ən azı bir kiçik və böyük hərflə simvol olmalıdır");
}
}
else
{
ModelState.AddModelError("", "Təsdiq şifresi fərqli yazılıb");
}
}
}
return View(registerViewModel);
}
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> LoginUser(string returnUrl = null)
{
await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);
ViewData["ReturnUrl"] = returnUrl;
return View();
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> LoginUser(LoginViewModel loginViewModel)
{
if (ModelState.IsValid)
{
AdUser currentuser = await _userManager.FindByEmailAsync(loginViewModel.UserName);
Microsoft.AspNetCore.Identity.SignInResult signInResult = await _signInManager.PasswordSignInAsync(loginViewModel.UserName, loginViewModel.Password, loginViewModel.RememberMe, lockoutOnFailure: true);
if (signInResult.Succeeded)
{
var user = this.User;
return RedirectToAction(nameof(HomeController.Index), "Home");
}
else
{
ModelState.AddModelError("", "Username or password is incorrect");
}
}
return View(loginViewModel);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> LogoutUser()
{
await _signInManager.SignOutAsync();
return RedirectToAction(nameof(HomeController.Index), "Home");
}
公共类AccountController:控制器
{
专用只读用户管理器
另外,我想补充一点,我有一个类似的项目,使用相同的编码方式,但这是可行的。是什么导致了这个问题?
我还清除了浏览器历史记录,以确保会话中没有任何内容被卡住。同样,没有工作
请协助解决。提前感谢!我觉得登录过程不正确,请参阅:
@model Samirad.Models.ViewModels.LoginViewModel
<section class="login py-5 border-top-1">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-5 col-md-8 align-item-center">
<div class="border">
<h3 class="bg-gray p-4">Login Now</h3>
<form method="post" asp-action="LoginUser" asp-controller="Account">
<div asp-validation-summary="ModelOnly"></div>
<fieldset class="p-4">
<input asp-for="UserName" type="text" placeholder="Username" class="border p-3 w-100 my-2">
<span asp-validation-for="UserName"></span>
<input asp-for="Password" type="password" placeholder="Password" class="border p-3 w-100 my-2">
<span asp-validation-for="Password"></span>
<div class="loggedin-forgot">
<input asp-for="RememberMe" type="checkbox" id="keep-me-logged-in">
<label for="keep-me-logged-in" class="pt-3 pb-2">Keep me logged in</label>
</div>
<button type="submit" class="d-block py-3 px-5 bg-primary text-white border-0 rounded font-weight-bold mt-3">Log in</button>
<a class="mt-3 d-block text-primary" href="#">Forgot Password?</a>
<a class="mt-3 d-inline-block text-primary" href="register.html">Register Now</a>
</fieldset>
</form>
</div>
</div>
</div>
</div>
</section>