Asp.net WebForms 启用角色
Asp.net WebForms Enable Roles
我在 Visual Studio 2017 年使用 ASP.NET WebForms 创建了一个网页。
我正在使用内置的用户管理并创建了一些用户。
现在我想使用角色功能。
首先我启用了 roleManager,但随后出现新错误
"Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion"
我尝试使用 aspnet_regsql.exe 将必要的部分添加到数据库中,但现在我的数据库中有两种表:AspNetUsers 和 aspnet_Users。
我需要做什么才能使用旧的 AspNet-Schematic 启用角色?
您必须针对您的数据库在 web.config 和 运行 aspnet_regsql.exe 中配置默认角色 provider/membership 提供商。
<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);
}
使用 Microsoft.AspNet.Identity 使用 VisualStudio 创建的标准 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
我在 Visual Studio 2017 年使用 ASP.NET WebForms 创建了一个网页。
我正在使用内置的用户管理并创建了一些用户。
现在我想使用角色功能。
首先我启用了 roleManager,但随后出现新错误 "Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion"
我尝试使用 aspnet_regsql.exe 将必要的部分添加到数据库中,但现在我的数据库中有两种表:AspNetUsers 和 aspnet_Users。
我需要做什么才能使用旧的 AspNet-Schematic 启用角色?
您必须针对您的数据库在 web.config 和 运行 aspnet_regsql.exe 中配置默认角色 provider/membership 提供商。
<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);
}
使用 Microsoft.AspNet.Identity 使用 VisualStudio 创建的标准 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