来自数据层的基于授权的内容

时间:2009-04-24 05:06:11

标签: asp.net asp.net-mvc

我正在开发一个类似的网络论坛,或者试图使用ASP.NET MVC设计一个。 但是,基于用户角色的内容比仅仅使用[Authorize]属性要大得多,因为给定的输出因访问角色而异。

因此,虽然版主角色的用户成员应该能够看到秘密子板,但普通成员角色的用户部分不应该。

为此,我需要正确设计我的数据层,但是我很想知道如何执行此操作,因为我真的想要遵循MVC模式并在Controller中应用过滤,但问题出现在嵌套内容和关系上

因为如果IList中的Category.Forum不应该对给定用户可见,那么我会以某种方式需要使用单个数据库查询来获取Category.Forum,而正确的数据层会尝试将其拆分为两个DA模块,CategoryDA和ForumDA。

另一件事是通过Membership系统整个应用用户角色,因为用户可以拥有多个角色。

这有点难以解释,但我想很多人都熟悉典型的公告板,并且可能能够让我知道如何正确设计我的数据访问层。

谢谢:)

1 个答案:

答案 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);
        }
    }
}