Внешний логин обратного вызова подписывает неверного пользователя - PullRequest
0 голосов
/ 21 ноября 2018

У меня странная проблема с методом ExternalLoginCallback.Я регистрирую некоторую информацию в журнале, и что интересно Email правильно, но тогда userId неверно и принадлежит другому пользователю, который был ранее зарегистрирован.

Т.е. некоторые UserA вошли всистема и теперь UserB хочет войти в систему в окне another.Я ожидаю, что в новом окне UserB войдет в систему и перезапишет куки, поэтому, если я обновлю первое окно, оно покажет UserB, но как-то этого не происходит, а во втором окне оно показывает UserA.

Вот код:

public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
    var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
    if (loginInfo == null)
    {
        return RedirectToAction("Login");
    }

    EventLogManager.LogWarning(loginInfo.Email);

    var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: true);
    switch (result)
    {
        case SignInStatus.Success:
            {
                var userId = SignInManager.AuthenticationManager.AuthenticationResponseGrant.Identity.GetUserId();

                EventLogManager.LogWarning(userId);
                ...

РЕДАКТИРОВАТЬ

Я думаю, что я должен добавить больше разъяснений.Есть какое-то действие, которое вызывается от третьей стороны - Shopify.Это выглядит так:

public ActionResult Callback(string code, string hmac, string shop, string state, string timestamp)
{
    //this resolved the issue
    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
    Session["Workaround"] = 0;

    return new ChallengeResult("Shopify", Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = "/Product/Products" }), null, shop.Replace(".myshopify.com", ""));
}
...