Asp.net WebForms启用角色

时间:2019-02-12 22:08:51

标签: asp.net webforms asp.net-roles

我已经使用ASP.NET WebForms通过Visual Studio 2017创建了一个网页。

我正在使用内置的用户管理并创建了一些用户。

现在我要使用角色功能。

首先我启用了角色管理器,但是随后出现一个新错误 “找不到存储过程'dbo.aspnet_CheckSchemaVersion”

我尝试使用aspnet_regsql.exe向数据库添加必要的部分,但是现在我的数据库中有两种表:AspNetUsers和aspnet_Users。

要使用旧的AspNet-Schematic启用角色,我该怎么做?

2 个答案:

答案 0 :(得分:0)

您必须在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);
                }

答案 1 :(得分:0)

使用Microsoft.AspNet.Identity使用VisualStudio创建的Standard-WebForms,因此也创建数据库以使用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