我有一个 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());
}
我在这里做错了什么?
更新:
一段时间后,网页将显示此错误: