2017-12-08 20 views
0

.Net Core 2 _loginpartial.cshtmlのログアウト()はリンクですか?個々の</strong> -au <strong>DOTNET新しい剃刀でデフォルトで作成された<strong>_loginpartial.cshtml</strong>内部

@using Microsoft.AspNetCore.Identity 
@using Lifejoice.Web.Data 
@inject SignInManager<ApplicationUser> SignInManager 
@inject UserManager<ApplicationUser> UserManager 

@if (SignInManager.IsSignedIn(User)) 
{ 
    <form asp-controller="Account" asp-action="Logout" method="post" id="logoutForm" class="navbar-right"> 
     <ul class="navbar-nav navbar-right2"> 
      <li class="nav-item"> 
       <a class="nav-link" asp-page="/Account/Manage/Index" title="Manage">Hello @UserManager.GetUserName(User)!</a> 
      </li> 
      <li class="nav-item"> 
       <button type="submit" class="btn btn-link navbar-btn nav-link">Log out</button> 
      </li> 
     </ul> 
    </form> 
} 
else 
{ 
    <ul class="navbar-nav navbar-righwt"> 
     <li class="nav-item"><a class="nav-link" asp-page="/Account/Register">Register</a></li> 
     <li class="nav-item"><a class="nav-link" asp-page="/Account/Login">Log in</a></li> 
    </ul> 
} 

は、ここでログアウト機能は、フォーム内のボタンにバインドされています。フォーム内のボタンの代わりにlink()として機能するLogout() - 関数を取得することは可能ですか?

+3

これがリンクではない理由は、 'Logout'アクションに対するクロスドメインGET要求を防ぐことです。フォーム投稿はクロスドメインには送信できません。ユーザーがクロスドメインログアウトのリスクにさらされることなくGETリクエストで動作するリンクを提供する場合は、公開する各ログアウトリンクのクエリ文字列にワンタイムトークンを実装することをお勧めします。痛みのビット。 – spender

+0

ありがとうございます。だから私はリンクのようにボタンをスタイルするか? – Opa114

+0

はい。ボタンは、アンカーリンクと同じように視覚的に動作するようにスタイリングすることができます。 – spender

答えて

0

前述のように、これがリンクではない理由は、ログアウトアクションに対するクロスドメインGET要求を防止するためです。フォーム投稿はクロスドメインには送信できません。ユーザーがクロスドメインログアウトのリスクにさらされることなくGETリクエストで動作するリンクを提供する場合は、公開する各ログアウトリンクのクエリ文字列にワンタイムトークンを実装することをお勧めします。

関連する問題