加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘南站长网 (https://www.0941zz.com/)- 科技、行业物联网、开发、云计算、云管理!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Microsoft身份验证注销不起作用

发布时间:2023-02-17 08:56:59 所属栏目:asp.Net 来源:互联网
导读:如何解决Microsoft身份验证注销不起作用? 战斗了2天...现在需要帮助。 我正在使用Visual Studio 2019中的Razor Pages使用ASP.NET Core 3.1进行项目。该项目具有本地帐户,能够注册其他外部帐户,例如Microsoft,Facebook等。我关注了有关Microsoft文档的教

          public logoutModel(SignInManager<IdentityUser> signInManager,ILogger<logoutModel> logger)
          {
              _signInManager = signInManager;
              _logger = logger;
          }
          public void OnGet()
          {
          }
          public async Task<IActionResult> OnPost(string returnUrl = null)
          {
              await _signInManager.SignOutAsync();
              _logger.Loginformation("User logged out.");
              if (returnUrl != null)
              {
                  return LocalRedirect(returnUrl);
              }
              else
              {
                  return RedirectToPage();
              }
          }
      }
  }
  _LoginPartial.cshtml
 
  @using Microsoft.AspNetCore.Identity
  @inject SignInManager<IdentityUser> SignInManager
  @inject UserManager<IdentityUser> UserManager
  <ul class="navbar-nav">
  @if (SignInManager.IsSignedIn(User))
  {
      <li class="nav-item">
          <a  class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Manage/Index" title="Manage">Hello @User.Identity.Name!</a>
      </li>
      <li class="nav-item">
          <form class="form-inline" asp-area="Identity" asp-page="/Account/logout" asp-route-returnUrl="@Url.Page("/",new { area = "" })" method="post" >
              <button  type="submit" class="nav-link btn btn-link text-dark">logout</button>
          </form>
      </li>
  }
  else
  {
      <li class="nav-item">
          <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Register">Register</a>
      </li>
      <li class="nav-item">
          <a class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Login">Login</a>
      </li>
  }
  </ul>
  解决方法
  代替在_LoginPartial.cshtml中使用@if (SignInManager.IsSignedIn(User)),将其更改为_signInManager,这是注入字段。 SignInManager是注入的类。
 
  ,
  看看这些
 
  http://www.binaryintellect.net/articles/3d6ce8b3-cb62-42b7-bedc-5e7f2fb9d017.aspx
 
  http://docs.identityserver.io/en/latest/topics/signout_external_providers.html
 
  看来退出外部用户是您的责任...
 
  public IActionResult SignOut(string signOutType)
  {
      if (signOutType == "app")
      {
          HttpContext.SignOutAsync().Wait();
      }
      if (signOutType == "all")
      {
          return Redirect("https://login.microsoftonline.com/common/oauth2/v2.0/logout");
      }
      return RedirectToAction("Index");
  }

(编辑:甘南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读