我正在编写一个ASP.MVC应用程序,我知道你可以在cotrollers上使用授权过滤器来控制对页面的访问,但我想知道如果你想在部分内部控制对受保护数据的访问,最好的办法是什么观点。
据我所知,ASP.MVC并没有提供这种级别的粒度。
通过将用户权限作为属性添加到模型中然后使用简单工厂来决定是应该呈现视图还是返回空白视图,这似乎很容易。
到目前为止我已经
了RenderPartial(PartialFactory.IsAllowedToRender(“partialName”,Model.Security),Model)
并且Factory返回请求的视图或空白的局部视图。
之前有没有人试过这个或知道为什么没有人这样做(除了额外的努力)
答案 0 :(得分:0)
我们对HtmlHelper的扩展方法做了类似的工作。
RenderPartialIfExists等。如果你经常需要的东西,这样做不会感到羞耻。
在没有扩展名的情况下这样做也可以,但它不是那么干净。另外,考虑将您的安全信息添加到HttpContext.Current.Items,这样您就不必一直将它传递给模型,任何需要利用它的东西,帮助器,控制器等都可以轻松访问它,你只需要在请求开始时获取它。