网页上的多重访问控制-C#
本文关键字:访问控制 -C# 网页 | 更新日期: 2023-09-27 17:58:16
在我的公司,我们目前在门户网站上工作。它将有点像一个社交网络。
我正在门户网站的"个人资料"部分工作。
我想知道,作为C#的新手,我该如何实现"see-only-what-I-let-you"功能。
以Facebook为例。在那里,你可以只向某些人显示你的个人资料的一部分,向其他人显示其他部分,你有完全的访问权限,而其他人可能根本没有访问权限。
这正是我需要实现的。
我们正在使用MVC3/jQuery1.5/WWC.
一个选项是将视图拆分为子操作:
@{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
}
如果可能的话,尝试跨子操作缓存用户权限数据(取决于您对用户可见内容的计算方式)。
此代码假设您的所有操作都在同一个控制器上运行。只需将控制器的名称作为第二个参数传递,就可以为子操作调用不同的控制器。