2017-09-09 22 views
0

私はAsp.net Core Identityバージョン2.0をセットアップして実行しています。 _signinManager.SignoutAsyncは、Googleにログインしてからユーザーをログアウトしていないことがわかりました。私が自分のログインメソッドに戻ったときには、そのユーザはクレームオブジェクトをそのまま残してログインしていることだけが示されます。問題がSignOutAsync問題というあなたのRedirectToActionは、Identity ServerのENDSESSION URLへのリダイレクトを上書きすることであるASP.NET Core Identity 2.0 SignoutAsync

[AllowAnonymous] 
public ActionResult TestGoogle() 
{ 
    var redirectUrl = Url.Action(nameof(ExternalCallback), "Account", new { ReturnUrl = "" }); 
    var properties = _signInManager.ConfigureExternalAuthenticationProperties("Google", redirectUrl); 
    return Challenge(properties, "Google"); 
} 


public async Task<IActionResult> LogOff() 
{ 
    await _signInManager.SignOutAsync(); 
    return RedirectToAction(nameof(HomeController.Index), "Home"); 
} 
+0

こんにちは、おそらくクッキーです。 LogOffで試してみてください: HttpContext.Authentication.SignOutAsync( "yourcookie");を待ちます。 –

+0

この回答を見ると、VSはそのメソッドが廃止され、将来のバージョンで削除されると述べています。だから避けたい。 – AliK

答えて

0

以下のよう

コードは本当に簡単です。

SignOutAsyncについては、Authenticationの部分が廃止されました.ASPコア2.0以降は、直接HttpContextの拡張機能です。

(同じサインアウトの問題のために同じ説明がMicrosoftのHaoKでhereを与えている。)

編集:ソリューションは、最終的なSignOutAsyncAuthenticationPropertiesオブジェクトにリダイレクトURLを送信することです:

// in some controller/handler, notice the "bare" Task return value 
public async Task LogoutAction() 
{ 
    // SomeOtherPage is where we redirect to after signout 
    await MyCustomSignOut("/SomeOtherPage"); 
} 

// probably in some utility service 
public async Task MyCustomSignOut(string redirectUri) 
{ 
    // inject the HttpContextAccessor to get "context" 
    await context.SignOutAsync("Cookies"); 
    var prop = new AuthenticationProperties() 
    { 
     RedirectUri = redirectUri 
    }); 
    // after signout this will redirect to your provided target 
    await context.SignOutAsync("oidc", prop); 
} 
+0

誰が下降し、なぜですか?私はこのコードをプロダクションで実行していますが、私は同じ問題をこの問題に遭遇しました。私はその質問によって提供される詳細を与えることができるので、それが正しいと確信しています。私にドライブバイダウンワードのように見える。 – McGuireV10

+1

あなたに雨が降り注ぐかもしれない!私はあなたにそれを与えることができます。私は同じSignOutAsyncとRedirectToActionをやっていて、なぜうまくいかないのか悲しんでいました。これは私のためのパーフェクト修正でした。 – ilikeprogramming

関連する問題