3

PasswordSignInAsyncログイン コードはreturnであるため機能しているように見えますが、次のリクエストで を使用しSucceedてユーザー情報を取得すると、常に me が返されます。また、戻ってきています。User.GetUserName()nullUser.IsSignedIn()false

public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
{
    ViewData["ReturnUrl"] = returnUrl;
    if (ModelState.IsValid)
    {
        var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure: false);
        if (result.Succeeded)
        {
            // this code executed and the redirection works fine
            Logger.LogInformation(1, "User logged in.");
            return RedirectToLocal(returnUrl);
        }
        if (result.RequiresTwoFactor)
        {
            Logger.LogWarning(2, "RequiresTwoFactor");
        }
        if (result.IsLockedOut)
        {
            Logger.LogWarning(3, "User account locked out.");
        }

        ModelState.AddModelError(string.Empty, "Invalid login attempt.");
        return View(model);
    }

    return View(model);
}

次のリクエストでは、情報を返すことができませんでした。

Logger.LogWarning(User.Identity.Name ?? "User.Identity.Name is null"); // null
Logger.LogWarning(User.GetUserName() ?? "User.GetUserName() is null"); // null
Logger.LogWarning(User.IsSignedIn() ? "User is signed in" : "User is not signed in"); // not signed in

私の Startup.cs

app.UseIdentity();

services.AddIdentity<CustomAccount, CustomRole>(options =>
{
    options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromHours(24);
})
.AddEntityFrameworkStores<ApplicationDbContext, long>()
.AddDefaultTokenProviders();

注:app.UseJwtBearerAuthentication同じアプリケーションでも使用していますが、問題になる可能性はありますか?

4

1 に答える 1