网页上的多重访问控制-C#

本文关键字:访问控制 -C# 网页 | 更新日期: 2023-09-27 17:58:16

在我的公司,我们目前在门户网站上工作。它将有点像一个社交网络。

我正在门户网站的"个人资料"部分工作。

我想知道,作为C#的新手,我该如何实现"see-only-what-I-let-you"功能。

以Facebook为例。在那里,你可以只向某些人显示你的个人资料的一部分,向其他人显示其他部分,你有完全的访问权限,而其他人可能根本没有访问权限。

这正是我需要实现的。

我们正在使用MVC3/jQuery1.5/WWC.

网页上的多重访问控制-C#

一个选项是将视图拆分为子操作:

@{Layout = "~/Views/Shared/Layouts/MasterLayout.cshtml";}
<div class="splitter">
    <div class="left-column">
       @Html.Action("Navigator")
       @Html.Action("MyPosts")
    </div>
    <div class="main-content">
       @Html.Action("RecentStories")
       @Html.Action("Adverts")
    </div>
</div>

然后,在您的控制器中,每个操作都决定当前用户是否可以看到这段内容,例如

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult RecentStories()
{
    if(current_user_cannot_access_this_content())
        return View("BlankView"); // Might want to render some place holder content
    // Setup necessary view data by pulling back content from the database.....
    return View(); // Render the /Views/<controller>/RecentStories.cshtml view 
}

如果可能的话,尝试跨子操作缓存用户权限数据(取决于您对用户可见内容的计算方式)。

此代码假设您的所有操作都在同一个控制器上运行。只需将控制器的名称作为第二个参数传递,就可以为子操作调用不同的控制器。