asp .net mvc授权

dri*_*weg 4 membership asp.net-mvc

在asp .net mvc中保护Web应用程序某些区域的最佳方法是什么?我知道我们可以[Authorization]在每个动作中放置属性,但这似乎非常繁琐,因为你必须把它放在所有地方.我正在使用成员资格提供程序,并通过基于该文件夹设置此保护来尝试我以前在回发模型中的方式.我使用web.config <location>部分来保护一些文件夹.我在mvc中试过这个,它看起来很有效,但大部分教程都使用了这种[Authorization]方式.

哪一个更好的方法?

and*_*ows 6

我强烈建议不要把它放在web.config中.其实,这样做Conery设备,Hanselman的,哈克和格思里 - 虽然不高(专业ASP.NET MVC 1.0的P223)

路由可能会发生变化,尤其是在MVC中.使用WebForm模型,路由在文件系统上实际表示,因此您不必担心它.在MVC中,由于缺乏更好的术语,路线是"动态的".

最终可能会有多个路由映射到一个控制器,从而导致web.config中的维护工作变得困难.更糟的是,你可以在不经意间有一个路径意外调用控制器或忘记添加/修改航线后更新的web.config并会把自己暴露.

但是,如果您保护控制器而不是实际路由,那么您不必担心web.config与控制器的运行和更改路由保持同步.

只需2美分.


Mar*_*oli 5

一种可能的解决方案是创建一个“受保护的控制器”,并将其用作要保护的应用程序所有区域的基类。

[Authorize]
public class ProtectedBaseController : Controller { 

}

public class AdminController : ProtectedBaseController { 
  ...
}

public class Admin2Controller : ProtectedBaseController { 
  ...
}
Run Code Online (Sandbox Code Playgroud)