【发布时间】:2013-09-21 12:52:46
【问题描述】:
我有一个 Asp.Net MVC 5 应用程序。我想使用用户角色来仅授权某些人使用特定操作。我已经像这样更改了我的Web.config 文件:
<roleManager enabled="true"/>
<membership defaultProvider="SimpleMembershipProvider">
<providers>
<clear/>
<add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
</providers>
</membership>
这是我将用户添加到角色的方式:
if (!await Roles.RoleExists(role))
await Roles.CreateRole(new Role(role));
await Roles.AddUserToRole(role, user.Id);
目前,我可以使用以下代码通过代码访问用户的角色:
public static async Task<IEnumerable<string>> GetUserRoles(string username)
{
if (string.IsNullOrEmpty(username))
return new string[0];
string userId = await Logins.GetUserId(IdentityConfig.LocalLoginProvider, username);
var roles = await Roles.GetRolesForUser(userId);
return roles;
}
但是,当我尝试使用Authorize 属性来访问角色时,页面会卡住并且没有加载任何内容。
[Authorize(Roles = "Admin")]
public ActionResult Index()
{
return View(db.Restaurants.ToList());
}
我在这里做错了什么?
更新:
一段时间后网页会显示这个错误:
【问题讨论】:
-
问题很清楚。未找到数据库实例。检查您的连接字符串。
-
@MystereMan 我可以在任何其他情况下使用我的数据库。尝试使用
AtuthorizeAttribute时,数据库如何工作但找不到? -
由于您没有提供有关您的数据库的任何信息,我怎么知道?
-
@MystereMan 感谢您的帮助,但我明确提到我可以通过代码访问我的角色,但只有在尝试使用该属性时才会出现错误。请再次完整阅读该问题。谢谢。
-
您可以随心所欲地说,但如果不提供有关您如何连接到数据库的信息,没有人可以告诉您您做错了什么。
标签: asp.net simplemembership asp.net-mvc-5 asp.net-identity role-manager