1

我正在研究如何在 MVC 4 (.NET 4.5) 中实现授权,并且一直在阅读有关SimpleMembership的信息。MVC 中是否有任何典型或公认的方式来让角色除了名称之外还有其他属性?

例如,假设您正在设计一个 CMS,并且希望能够拥有一个名为类似的角色Writer,让用户进行修改。但是,您还希望角色仅限于单个页面。我知道的唯一方法是为每个页面设置一个单独的角色,其中每个角色可能被命名为Writer_<PageID>. 有没有比这更好的模式,或者这几乎是我们所能做的?

理想情况下,我想知道是否有某种方法可以远程获得类似的东西:

public ActionResult EditPage(Page page) {
    WriterRole role = new WriterRole(page);

    if (!User.IsInRole(role)) {
        return NotAuthorized();
    }

    // Edit...
}

代替:

public ActionResult EditPage(Page page) {
    string role = "Writer_" + page.Id;

    if (!User.IsInRole(role)) {
        return NotAuthorized();
    }

    // Edit...
}
4

1 回答 1

2

我要做的是拥有一个 Writer 角色,然后检查 UserId 以查看此人是否拥有可编辑资源。

[Authorize(Roles = "Writer")]
public ActionResult EditPage(Page page) {
    if (User.UserId == page.UserId) { ... }
}
于 2013-02-21T00:13:55.443 回答