2016-05-11 13 views
0

ユーザーがボタンを押すたびにサインアウトしようとしています。 これは呼び出されたメソッドです。AuthenticationManagerでサインアウトできない

ユーザーがボタンを押すと、メソッドはヒットしますが、ユーザーは決してログアウトしません。例外は発生せず、ユーザーは単にサインアウトされません。

ありがとう!

+0

? – tmg

+0

詳細を教えてください。 「アンカー」とはどういう意味ですか? – Detilium

+0

LogOffタグ – tmg

答えて

0

コード以下試行

public ActionResult Logoff() 
{ 
    FormsAuthentication.SignOut(); 
    return RedirectToAction("Index"); 
} 
+0

違いはありませんが、私はまだサインアウトしていません。 AuthenticationManager.SignOut()が失敗した – Detilium

+0

@Detilium理由はResponse.SetStatus(HttpStatusCode.SeeOther)は内部反応終了することである: パブリック静的ボイドのsetStatus(このHttpResponseBase応答、INT httpStatusCode) {response.StatusCode = httpStatusCodeと、 response.End(); } – stylishCoder

+0

@デチリウムは働いていますか? – stylishCoder

0

ログオフ関数[HttpPost]有し、[ValidateAntiForgeryToken]タグ。したがって、それはAntiForgeryTokenを送信しているフォームを待っています。したがって、このような状況のためにボタンを設定する必要があります。

あなたのログオフボタンは、あなたのビューでは、このように見ている:あなたがボタンを言うとき、あなたがアンカーを使用している

@using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" })) 
           { 
            @Html.AntiForgeryToken() 
            <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li> 
           } 
+0

私はすでに '@ Html.AntiForgeryToken()'を持っています – Detilium

+0

あなたのHtml.BeginFormはIDですか?同様に:@using(Html.BeginForm( "LogOff"、 "Account"、FormMethod.Post **、new {id = "logoutForm"} **)) – kkakkurt

+0

はい。さもなければ、 'a'タグはどんなフォームにヒットするのかを知らないので、コントローラのメソッドをヒットしません。 – Detilium

関連する問題