У меня есть проект MVC, который позволяет моим пользователям добавлять пользователей и роли в таблицы AspNetRoles
и AspNetUsers
. Приложение использует Active Directory для аутентификации пользователей в представлении входа в систему. В моей базе данных я добавил пользователя user123
к роли Administrators
в моей базе данных. Я добавил следующую логику, чтобы сделать эту ссылку видимой для роли Administrators
в моем частичном входе в систему.
@if (Roles.IsUserInRole("Administrators"))
{
@Html.ActionLink("Manage Accounts", "Index", "Roles")
}
Я также добавил это в свой файл web.config, пытаясь создать экземпляр подключения поставщика ролей к базе данных.
<roleManager enabled="true">
<providers>
<clear />
<add connectionStringName="DefaultConnection"
name="AspNetSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider"
applicationName="MyApplicationName" />
</providers>
</roleManager>
Однако моя ссылка по-прежнему невидима для user123
, который, согласно моей базе данных, является членом Administrators
. Какова причина этого?
1 ответ
Вы одновременно смешиваете удостоверение, членство в ASP.NET и проверку подлинности Windows, которые по своей сути несовместимы друг с другом. Если вы используете Identity, поставщики ролей и тому подобное не используются. Это все часть членства в ASP.NET, которое заменено на Identity. Windows Auth - это совершенно другой зверь, который не работает с индивидуальной аутентификацией, предоставляемой Identity или ASP.NET Membership.
Если вы хотите использовать свою собственную систему аутентификации и хотите аутентифицироваться через AD, вы не можете использовать Windows Auth. Вместо этого вы должны вручную подключиться к своей AD через LDAP и выполнить авторизацию для этого. Вам по-прежнему понадобятся фактические пользовательские записи в вашей системе, предоставляемые Identity (поскольку никто больше не должен использовать членство в ASP.NET), но вы не будете использовать Identity для фактической проверки комбинации пользователь / пароль. Вместо этого вы могли бы сделать это через LDAP, а затем просто войти в систему на стороне удостоверения.
Похожие вопросы
Новые вопросы
asp.net-mvc
ASP.NET MVC Framework - это платформа и инструмент веб-приложений с открытым исходным кодом, которые реализуют версию шаблона модель-представление-контроллер (MVC), адаптированную к веб-приложениям и построенную на основе технологии ASP.NET.