Asp.net WebForms Включить Роли - PullRequest
       25

Asp.net WebForms Включить Роли

0 голосов
/ 13 февраля 2019

Я создал веб-страницу через Visual Studio 2017 с использованием веб-форм ASP.NET.

Я использую встроенное управление пользователями и создал несколько пользователей.

Теперь я хочуиспользуйте функцию-роль.

Сначала я включил roleManager, но затем я получаю новую ошибку "Не удалось найти хранимую процедуру" dbo.aspnet_CheckSchemaVersion "

Я пытался использоватьaspnet_regsql.exe для добавления необходимых частей в базу данных, но теперь у меня есть две таблицы в моей базе данных: AspNetUsers и aspnet_Users.

Что мне нужно сделать, чтобы включить роли со старой AspNet-Схематическое

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Стандартные веб-формы, созданные с помощью VisualStudio с использованием Microsoft.AspNet.Identity, а также базы данных, созданной для использования схемы Microsoft.AspNet.Identity.

Поэтому для добавления ролей необходимо использовать RoleManager:

string roleName = "role";
var roleManager = new RoleManager<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));

if (!roleManager.RoleExists(roleName))
{
    var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
    role.Name = TextBoxRole.Text;
    roleManager.Create(roleName);
}

System.Web.Security имеет собственную схему и не работает с Microsoft.AspNet.Identity

0 голосов
/ 13 февраля 2019

Вы должны настроить поставщика роли по умолчанию / поставщика членства в web.config и запустить aspnet_regsql.exe для вашей базы данных.

вот документация: https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-security/membership/creating-the-membership-schema-in-sql-server-cs

  <system.web>
    <roleManager enabled="true" cacheRolesInCookie="false" defaultProvider="AspNetSqlRoleProvider">
      <providers>
        <clear />
        <add applicationName="app-name" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="roleManagerSqlConnString" />
        <add applicationName="app-name" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
      </providers>
    </roleManager>
  </system.web> 
using System.Web.Security;

                string userName = HttpContext.Current.User.Identity.Name;
                if (!Roles.IsUserInRole(roleName))
                {
                    Roles.AddUserToRole(userName, roleName);
                }
...