Asp.net mvc C#MVC我必须使用DB作为角色提供程序吗
我一直在尝试使用角色提供者,但一周来它一直让我头疼 我所要做的就是允许用户能够看到“Admin”页面,如果他们是管理员(我在数据库中添加了Admin冒号,为0或1) 这是我的控制器中用于登录的代码Asp.net mvc C#MVC我必须使用DB作为角色提供程序吗,asp.net-mvc,entity-framework-4,roleprovider,Asp.net Mvc,Entity Framework 4,Roleprovider,我一直在尝试使用角色提供者,但一周来它一直让我头疼 我所要做的就是允许用户能够看到“Admin”页面,如果他们是管理员(我在数据库中添加了Admin冒号,为0或1) 这是我的控制器中用于登录的代码 if (user.Admin == 1) { addUserToRole(user.UserID, "Admin"); }
if (user.Admin == 1)
{
addUserToRole(user.UserID, "Admin");
}
else
{
}
下面是将用户添加到角色的方法
public void addUserToRole(String user, String role)
{
if (!Roles.RoleExists(role))
Roles.CreateRole(role);
Roles.AddUserToRole(user, role);
}
对于管理员控制器,我想输入以下内容
[Authorize(role= "admin")]
这是我的网络配置
<profile defaultProvider="DefaultProfileProvider">
<providers>
<add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxx" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
<providers>
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxx" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider" enabled="true">
<providers>
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxx" connectionStringName="Database2Entities1" applicationName="/" />
</providers>
</roleManager>
我的问题是我是否必须使用数据库(意味着我必须添加角色表等)才能使用此角色提供程序。
如果是,是否有其他方法可以实现这一点?如果使用SimpleMembership提供程序,您将自动获得的表将是-->您的用户表、角色、用户角色、成员资格,其中在角色中可以添加您想要的角色,在用户角色中可以通过以下行向角色添加用户: 假设您已经将角色“Admin”种子添加到数据库表中的角色
System.Web.Security.Roles.AddUsersToRole("username, "yourrolename");
数据库中角色表中角色的种子设定与您的操作相同:
WebSecurity.InitializeDatabaseConnection("DefaultConnection",
"UserProfile", "UserId", "UserName", autoCreateTables: true);
var roles = (SimpleRoleProvider)Roles.Provider;
var membership = (SimpleMembershipProvider)Membership.Provider;
if (!roles.RoleExists("Admin"))
{
roles.CreateRole("Admin");
}
// you can do the seed of the role to user in the seed method too
if (membership.GetUser("user", false) == null)
{
membership.CreateUserAndAccount("user", "123456");
}
if (!roles.GetRolesForUser("user1").Contains("Admin"))
{
roles.AddUsersToRoles(new[] { "user" }, new[] { "Admin" });
}
您还必须使用以下命令更改web配置中的成员资格段落:
<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
<providers>
<clear />
<add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" />
</providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear />
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
但不需要每次将用户添加到角色时都执行此操作。希望这能有所帮助。我很确定您需要一个数据库来完成这项工作。但是,如果配置正确,表应该自动设置,并且可以通过应用程序填充。