ASP.NET 4.6,Identity Framework和SQL Azure

时间:2016-04-14 15:53:48

标签: asp.net sql-server entity-framework azure asp.net-identity

我有一个 ASP 4.6 MVC网站(全部更新到最新的Nuget软件包),它在SQL Server上使用集成的Identity Framework和Entity Framework。

如果我将 Connectionstring 与我的数据库管理员一起使用,一切都可以找到,但是当我切换到额外的Databaseuser时,我得到一个"用户登录失败..."。

我使用以下方法在主数据库中创建了用户:

CREATE LOGIN user1 with password='geheim'

然后将他添加到数据库中:

CREATE USER user1 FROM LOGIN user1 

EXEC sp_addrolemember 'db_datareader', 'user1' 
EXEC sp_addrolemember 'db_datawriter', 'user1'

我可以将此凭据从 SQL企业管理器连接到 SQL Azure 并查询我的数据库,但不能在数据库上使用Identity。

使用数据库需要哪些角色或权限?

2 个答案:

答案 0 :(得分:1)

经过长时间调试Sessions后,我找到了解决方案: 如果throwIfV1Schema设置为true,Identity Framework将联系以扫描数据库。 当我使用自定义IdentityDbContext时,我必须将构造函数更改为:

Public Sub New()
    MyBase.New(Settings.DSN, False)
End Sub

现在,Identity Framework的启动只需要当前数据库的用户。

答案 1 :(得分:0)

我会尝试使LOGIN名称与USER名称不同。您可以在以下链接中找到有关如何设置以及使用哪些角色的详细说明:SQL Database security: Manage database access and login security

以下示例是从该页面提供的,与您所拥有的类似。

-- first, connect to the master database
CREATE LOGIN login1 WITH password='<ProvidePassword>';
CREATE USER login1User FROM LOGIN login1;
EXEC sp_addrolemember 'dbmanager', 'login1User';
EXEC sp_addrolemember 'loginmanager', 'login1User';