【问题标题】:ASP.NET 5 MVC6 User.GetUserId() returns incorrect idASP.NET 5 MVC6 User.GetUserId() 返回不正确的 id
【发布时间】:2015-11-01 15:14:38
【问题描述】:

我在 ASP.NET 5 中有一个注册用户的简单项目。我试图通过扩展方法GetUserId()using System.Security.Claims 命名空间获取当前登录用户的ID。 不幸的是,这个方法返回我不存在的 id,我不知道为什么。

这是我的简单代码:

var currentUserId = User.GetUserId();

方法结果:

数据库:

【问题讨论】:

  • 您是否尝试过清除 cookie、缓存并重试?也许你得到了一个旧的 auth cookie?
  • 每次我看到这个问题 - 这是缓存/cookies问题。在浏览器中打开一个私人会话并尝试在那里调试。
  • @enki.dev 谢谢,可能是缓存的问题。但我不明白为什么我能够以非现有用户身份登录?

标签: c# asp.net asp.net-identity asp.net-core-mvc


【解决方案1】:

您获得的身份验证票很可能仍然有效,或者您获得了您在本地运行的另一个站点的身份验证票。我会清除浏览器缓存和 cookie 并再次运行它。

另外,尝试更改 cookie 的名称,默认设置为 .AspNet.Cookies,如果您在本地运行多个应用程序,这可能会导致问题。这让我很早以前就被吸引住了。

cookie名称可以这样更改

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    Provider = new CookieAuthenticationProvider
    {
        OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<UserManager, ApplicationUser>(
            validateInterval: TimeSpan.FromMinutes(0),
            regenerateIdentity: (manager, user) => manager.GenerateUserIdentityAsync(user))
    },
    CookieName = "myAuthCookie",
});

上面的MSDN文档可以是found here

【讨论】:

猜你喜欢
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
  • 2014-12-16
  • 1970-01-01
  • 2015-03-18
  • 1970-01-01
相关资源
最近更新 更多