/ / ASP.NET 4.6, идентификационна рамка и SQL Azure - asp.net, sql-сървър, entity-framework, azure, asp.net-идентичност

ASP.NET 4.6, идентификационна рамка и SQL Azure - asp.net, sql-сървър, entity-framework, azure, asp.net-идентичност

имам ASP 4.6 MVC уебсайт (Всички актуализирани до най-новите пакети Nuget), който използва интегрираната рамка за идентичност с Entity Framework на SQL Server.

Ако използвам 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 Enterprise Manager да се SQL Azure и да запитвам моята база данни, но не мога да използвам самоличността в базата данни.

Какви идеи са необходими, за да използвате базата данни?

Отговори:

1 за отговор № 1

След дълги отстраняване на грешки сесиите намерихрешение: Рамката за идентичност се свързва, за да сканира базата данни, ако throwIfV1Schema е настроен на true. Тъй като използвам персонализирана идентичностDbContext, трябваше да променя конструктора към това:

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

Сега стартирането на идентификационната рамка само се нуждае от потребител за текущата база данни.


0 за отговор № 2

Бих опитал да направя LOGIN името различно от името на USER. Можете да намерите подробни инструкции как да го настроите и какви роли да използвате на следната връзка: Сигурност на SQL база данни: Управление на достъп до бази данни и сигурност на вход

Следният пример е предоставен от тази страница, която е подобна на тази, която имате.

-- 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";