我正在开发一个类似的网络论坛,或者试图使用ASP.NET MVC设计一个。 但是,基于用户角色的内容比仅仅使用[Authorize]属性要大得多,因为给定的输出因访问角色而异。
因此,虽然版主角色的用户成员应该能够看到秘密子板,但普通成员角色的用户部分不应该。
为此,我需要正确设计我的数据层,但是我很想知道如何执行此操作,因为我真的想要遵循MVC模式并在Controller中应用过滤,但问题出现在嵌套内容和关系上
因为如果IList中的Category.Forum不应该对给定用户可见,那么我会以某种方式需要使用单个数据库查询来获取Category.Forum,而正确的数据层会尝试将其拆分为两个DA模块,CategoryDA和ForumDA。
另一件事是通过Membership系统整个应用用户角色,因为用户可以拥有多个角色。
这有点难以解释,但我想很多人都熟悉典型的公告板,并且可能能够让我知道如何正确设计我的数据访问层。
谢谢:)
答案 0 :(得分:0)
可能更容易创建自己的操作过滤器来执行授权,而不是使用基本的[Authorize]属性。像这样:
public class CheckPermission : ActionFilterAttribute
{
public override void OnActionExecuting
(ActionExecutingContext filterContext)
{
try
{
// do your security checks here
// if NOT allow, throw NOTAUTHORIZED exception
}
catch (Exception ex)
{
// handle how to redirect - auto logout, etc
}
finally
{
base.OnActionExecuting(filterContext);
}
}
}