标签: role-manager

MVC5中的授权/角色

我在MVC5(VS2013)中使用授权/角色时遇到了麻烦.

身份验证几乎可以开箱即用(也就是说只需使用Visual Studio创建默认的MVC项目).我将DefaultConnection连接字符串更改为有效(但不存在)的数据库.然后我注册一个新的用户和数据库被自动创建,以表,如AspNetUsersAspNetRoles.

但是,我似乎无法对角色做任何事情.要做的第一件事似乎是使用C#代码添加角色,例如:

Roles.CreateRole("Admin");
Run Code Online (Sandbox Code Playgroud)

我收到一条消息的异常:

"尚未启用角色管理器功能."

我在web.config中使用以下命令启用它:

<roleManager enabled="true"/>
Run Code Online (Sandbox Code Playgroud)

现在得到例外:

"无法连接到SQL Server数据库."

这曾经非常容易使用System.Web.Security.SqlRoleProvider,但不适用于MVC5默认的新提供程序.关于这一点有很多非常复杂的文章,但在我看来,它是如此必要和直接的东西,必须有一个简单的方法来使它工作.

非常感谢任何帮助.

c# asp.net-mvc-5 role-manager

6
推荐指数
2
解决办法
5631
查看次数

ASP.NET Core Identity userManager.AddToRoleAsync() - 按 id 添加

我有一个自定义用户角色类CompanyId作为外键。所以我可以创建与公司相关的用户角色。这意味着管理员角色或任何其他角色本身可以在多个公司中担任。我无法与公司和角色建立多对多关系,因为一家公司的管理员声明可能因另一家公司而异。所以我在用户角色实体中添加了公司 ID。

我的问题是,用户管理器将角色名称作为参数AddToRoleAsync(),我无法使用它,因为角色名称可能是多余的。如果我能够通过 Id 添加用户角色,那就太好了。有解决方法可以实现这一目标吗?

我当前的解决方法是将公司名称添加为角色名称的前缀。喜欢:ABC - 管理员;XYZ - 管理员。我不太喜欢这个,用户也不会。

如果我可以为两者创建一个重载方法AddToRoleAsync(),并IsInRoleAync()通过其 ID 而不是名称来查找角色,那就太好了。

c# asp.net-identity role-manager usermanager asp.net-core

5
推荐指数
1
解决办法
2008
查看次数

获取 ASP.NET MVC 中的角色列表

我有以下方法来获取存储在中的角色列表AspNetRoles

    [AllowAnonymous]
    public async Task<ActionResult> Register()
    {
        //Get the list of Roles
        ViewBag.RoleId = new SelectList(await RoleManager.Roles.ToListAsync(), "Name", "Name");

        return View();
    }
Run Code Online (Sandbox Code Playgroud)

然后我看到它如下

    <div class="form-group">
        <label class="col-md-2 control-label">
            Select User Role
        </label>
        <div class="col-md-10">
            @foreach (var item in (SelectList)ViewBag.RoleId)
            {
                <input type="checkbox" name="SelectedRoles" value="@item.Value" class="checkbox-inline" />
                @Html.Label(item.Value, new { @class = "control-label" })
            }
        </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

但是一旦我加载页面,我就会收到Object reference not set to an instance of an object.错误

第 175 行:ViewBag.RoleId = new SelectList(await RoleManager.Roles.ToListAsync(), "Name", "Name");

这是RoleManager …

c# asp.net-mvc asp.net-mvc-4 asp.net-identity role-manager

2
推荐指数
1
解决办法
5817
查看次数