У меня странная проблема с методом 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", ""));
}