ユーザーがログインした後に呼び出されるシンプルなコントローラがあります。ユーザーがログインしていることを自分のIDサーバーで確認できます.AspNetCoreも見ることができます。 Identity.Applicationクッキーがブラウザに設定されます。コントローラがロードされていません.AspNetCore.Identity.Applicationユーザークッキー
ログインした後、ユーザーは、問題は、コントローラが認証されて表示されないことである
RedirectToAction(nameof(Index), "Manage")
を使用して、このコントローラに転送されます。クッキー
var loadTheStupidCookie = await HttpContext.AuthenticateAsync(IdentityConstants.ApplicationScheme);
var user = await _userManager.GetUserAsync(loadTheStupidCookie.Principal);
をロードするためにそれを強制的にその周りの仕事はこれがなく、働く私を発見した私はHttpContext.Userを試してみましたし、他のすべては、私は、コントローラがクッキー
[Authorize]
[Route("[controller]/[action]")]
public class ManageController : Controller
{
[HttpGet]
[AllowAnonymous]
public async Task<IActionResult> Index(ManageMessageId? message = null)
{
// try to find user here.
}
}
を読んされていないと考えることができます私はそれがコントローラー内のすべてのメソッドにロードする必要があると思う。コントローラが私のためにクッキーを読み込むことはできませんか?
startup.cs
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = new PathString("/Account/Login");
options.AccessDeniedPath = new PathString("/Account/Forbidden/");
})
.AddGoogle("Google", options =>
{
options.AccessType = "offline";
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.ClientId = "xxxxx.apps.googleusercontent.com";
options.ClientSecret = "XXXX";
});
から注:削除[のAllowAnonymous]それはおそらく、それが認証を参照してください傾けるという事実にまったく動作しないようになります。
スタートアップのミドルウェア設定に 'app.UseAuthentication()'がありますか? – juunas
@juunasはいその構成です。 – DaImTo
UseMvc()前の前提ですか? :) – juunas