角色asp.net设置

时间:2017-04-26 12:18:38

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我目前正在使用ASP.NET MVC 4开发一款应用,但我也在学习。

我想使用角色进行身份验证,但是我做错了。

重点是我不需要更多角色,我只想要默认角色。

<system.web>

<authentication mode="None" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<roleManager enabled="true" />

在控制器

[Authorize(Roles = "Administrator")]
public class AccountController : Controller
{}

在LogIn post方法中,我想将用户添加到该角色。

if (!Roles.IsUserInRole(saveAccount.Username, "Administrators"))
     Roles.AddUserToRole(saveAccount.Username, "Administrators");

但是每当我登录并尝试重定向到另一个页面时,我都会得到这个

HTTP Error 401.0 - Unauthorized You do not have permission to view this directory or page.

有人可以指导我吗?

2 个答案:

答案 0 :(得分:0)

将用户添加到角色时,您必须使用UserId,而不是用户名。

您还必须在Roles表中创建一个记录,其中包含您想要的角色名称。

使用RoleManager创建新角色。

        ApplicationDbContext context = new ApplicationDbContext();
        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));

        if (!roleManager.RoleExists("Admin"))
        {

            //Creating Admin role  
            var role = new Microsoft.AspNet.Identity.EntityFramework.IdentityRole();
            role.Name = "Administrator";
            roleManager.Create(role);
        }

        if (!Roles.IsUserInRole(#yourUserId, "Administrator")) {
            Roles.AddUserToRole(#yourUserId, "Administrator");
        }

(您的用户和角色的数据库位于Server Explorer的“数据连接”区域的DefaultConnection下)。

答案 1 :(得分:0)

角色是授权,身份验证是另一个过程。

如果您只需要限制已知用户,那么:

  • 使用user / pass
  • 创建登录视图
  • 在web.config部分<system.web>
  • 上实施表单身份验证
  • 拒绝匿名用户

<system.web>
    <compilation debug="true" targetFramework="4.6.1" />
    <httpRuntime targetFramework="4.6.1" />
    <authentication mode="Forms">
             <forms all parameters needed to a connection's forms></forms>
    </authentication>
    <authorization>
      <deny users="?" />
    </authorization>
</system.web>