【发布时间】:2011-05-17 23:20:37
【问题描述】:
我现在正在修改一个用 c# MVC 编写的系统。
我刚刚在管理员区域中构建了一个额外的功能,允许管理员创建一个具有有限管理员功能的用户帐户。对于新功能,我在每个控制器上添加了以下内容:
[Authorize(Roles = "Administrator")]
但是,如果我使用受限管理员帐户登录并导航到此页面,它可以让我通过。
我很困惑,因为我似乎以正确的方式做这件事,但我对 MVC 也很陌生,还有什么我可以检查的吗?我没有更改 web.config 文件中的任何内容,所以应该没问题。
我知道上面的信息有限,不是在寻找现成的解决方案,更多关于我可以检查以纠正问题的建议。
谢谢
编辑:
这就是新角色/帐户的创建方式。也放轻松,这是第一次尝试,没有太多验证。
[Authorize(Roles = "Administrator")]
[HttpPost]
public ActionResult AddSalesManager(App.Web.Areas.Administrator.Models.SalesManager model, FormCollection formValues)
{
if (formValues["Cancel"] != null)
{
return RedirectToAction("Index");
}
if (!string.Equals(model.password, model.confirmpassword))
{
ModelState.AddModelError("password", "Password and Confirmation must match");
}
if (ModelState.IsValid)
{
using (ModelContainer ctn = new ModelContainer())
{
// First, create the user account inside the ASP.Net membership system.
//
Membership.ApplicationName = "App";
Roles.ApplicationName = "App";
if (!Roles.RoleExists("LimitedAdmin"))
Roles.CreateRole("LimitedAdmin");
// MembershipCreateStatus createStatus = MembershipService.CreateUser(model.email, model.password, model.email);
if (Membership.GetUser(model.email) == null)
{
Membership.CreateUser(model.email, model.password);
Roles.AddUserToRole(model.email, "LimitedAdmin");
}
}
}
return RedirectToAction("Index");
}
【问题讨论】:
-
发布您如何设置角色会有所帮助。
-
用户是否有多个角色?
-
@jfar。不,用户只是被分配了 LimitedAdmin 角色。
标签: asp.net-mvc authorization roles