我正在使用asp.NET MVC在C#中构建一个网站。
如何确保没有未经授权的人可以访问我的方法?
我的意思是,我想确保只有管理员可以在我的页面上创建文章。如果我将此逻辑放入方法中,并将此逻辑添加到数据库中,那么我的数据层中不会有业务逻辑吗?
建立一个始终位于数据层和业务层之间的单独的安全层是一种好的做法吗?
问题是,如果我在更高的级别上进行保护,我将不得不对许多地方进行检查,并且更有可能我错过了一个地方,用户可以绕过安全措施。
谢谢!
发布于 2010-03-20 21:43:31
授权过滤器(正如pmarflee所说的)是如何保护你的控制器的典型例子,尽管这并不总是能满足你的需求(例如,如果你通过其他方式暴露你的模型,比如你同时暴露了一个WCF服务)。
更具全局性和灵活性的方法是在某个地方(您选择的位置,但通常是在控制器或存储库基础上)需要一个安全服务,然后以某种方式传入一个用户上下文(通过params或构造函数)。是的,这意味着您必须确保在每个操作中调用该服务,但除非您决定使用某种面向方面的编程容器,否则很难避免这一点。
发布于 2010-03-20 19:32:46
看一下这个post,它解释了如何使用操作过滤器来提供对控制器操作的授权。
https://stackoverflow.com/questions/2482815
复制相似问题