【问题标题】:asp.net Identity tables not get created没有创建 asp.net 身份表
【发布时间】:2016-08-13 03:17:47
【问题描述】:

我正在使用带有 OWIN 和身份框架的 web api 2.2 模板。我故意将我的 DeafultConnection 设置为错误的 IP 地址,但在单步执行并获取不记名令牌和创建声明时没有收到任何错误。

我可以杀死 w3wp.exe,重新启动它,我的令牌仍然有效。那么它在哪里得到持久化呢?

我正在我的 GrantResourceOwnerCredentials() 方法中手动验证测试用户

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}

【问题讨论】:

  • 第一次注册用户时会创建表格

标签: c# .net asp.net-web-api asp.net-identity owin


【解决方案1】:

我可以杀死 w3wp.exe,重新启动它,我的令牌仍然有效。那么它在哪里得到持久化呢?

OAuth 令牌根本不持久,在默认的 Owin OAuth2 实现中,它们在设计上是无状态的。每个令牌都包含由服务器加密的为用户发出的声明,因此只有它可以解密和验证它。

如果您在不访问数据库的情况下验证您的用户(我假设这就是您在GrantResourceOwnerCredential 方法中说手动 时的意思),那么您DbContext 当然永远不会被实例化。

【讨论】:

  • 谢谢你,这很有意义!因此,如果我自己进行用户验证,IdentityDbContext 还能在哪里使用?添加身份框架似乎是一种浪费。
  • 如果您不使用 ASP.NET Identity 来管理您的用户(用户创建、验证等),那么您可以将其删除。默认模板使用它,但是如果您完全替换了默认用户管理,那么您将不需要它。
  • 作为后续行动,我删除了所有的身份信息,效果很好。
猜你喜欢
  • 2011-01-10
  • 2021-01-19
  • 2015-10-09
  • 1970-01-01
  • 2018-07-07
  • 1970-01-01
  • 2015-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多