WEB API 2身份 - 使用现有数据库

时间:2015-01-25 23:34:20

标签: c# asp.net asp.net-web-api asp.net-web-api2

我正在尝试使用基于令牌的身份验证的web api 2。但我想使用自己的数据库。用户已经创建。我在OnModelCreating中重命名了表格,  所以我有正确的表名,如Users,UserRole而不是Asp.netUsers等。我更改ApplicationDbContext的连接字符串以连接到我的数据库。

因此,当我通过web api注册新用户时,它会在表中正确创建用户,并且没问题。但是当我尝试创建一个新的持有者令牌时,当它尝试查找下面的用户时,它总是返回null。 不知道为什么。我所有的配置都是默认的,所以我无法理解。当我尝试搜索用户时,我总是在下面获取null。 var user = await userManager.FindAsync(context.UserName,context.Password);

我是否必须做一些特别的事情来使我的现有数据库中的web api 2认证工作?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。我还不清楚,但现在它的工作正确。为什么会出现问题:当我为我的连接字符串更改ApplicationDbContext构造函数时,我第一次做不到, 因为启动时出错(Unknow distributor Ado.net providerName),所以我在参数ApplicationDbContext中读取实际连接字符串(“Data Source = xxx.xxx.xxx.xxx; Initial Catalog = NameDB; ......... )。

public ApplicationDbContext()
            : base("Data Source=xxx.xxx.xxx.xxx; Initial Catalog=NameDB; .........")
        {
        }

编译还可以,但我上面有问题。 之后我读取了构造函数的正确文本(参数 - 来自Web.config的参数名称 - “MyConnection”),

public ApplicationDbContext()
            : base("MyConnection")
        {
        }

并为此连接字符串删除标记providerName =“System.Data.SqlClient”。错误“需要providerName ...”,我返回此标记。在那个开始没问题,并且应用程序正常工作后,我怎么能看到。