通过 SignInManager 展示登录状态

通过注入 SignInManager 完成登录状态的显式:

  1. <div class="container">
  2. @inject SignInManager<IdentityUser> SignInManager
  3. <nav class="navbar navbar-expand-sm bg-dark navbar-dark">
  4. ...
  5. <div class="collapse navbar-collapse" id="collapsibleNavbar">
  6. ...
  7. <ul class="navbar-nav ml-auto">
  8. @if (SignInManager.IsSignedIn(User))
  9. {
  10. <li class="nav-item">
  11. <form asp-controller="Account" asp-action="Logout" method="post">
  12. <button type="submit" style="width: auto" class="nav-link btn btn-link py-0">
  13. 注销 @User.Identity.Name
  14. </button>
  15. </form>
  16. </li>
  17. }
  18. else
  19. {
  20. <li class="nav-item">
  21. <a class="nav-link" asp-controller="Account" asp-action="Register">注册</a>
  22. </li>
  23. <li class="nav-item">
  24. <a class="nav-link" asp-controller="Account" asp-action="Login">登录</a>
  25. </li>
  26. }
  27. </ul>
  28. </div>
  29. </nav>
  30. @RenderBody()
  31. </div>

注销

  1. [HttpPost]
  2. public async Task<IActionResult> Logout()
  3. {
  4. await _signInManager.SignOutAsync();
  5. return RedirectToAction("Index", "Home");
  6. }