我正在使用asp.NET MVC在C#中构建一个网站
如何确保没有未经授权的人可以访问我的方法?
我的意思是我想确保只有管理员可以在我的页面上创建文章。如果我把这个逻辑放在实际将其添加到数据库的方法中,我的数据层中是不是有业务逻辑?
拥有一个始终位于数据层和业务层之间的单独安全层是一个好习惯吗?
问题在于,如果我在更高级别保护,我将不得不在许多地方进行检查,而且我更有可能错过一个地方,用户可以绕过安全。
谢谢!
答案 0 :(得分:2)
授权过滤器(如pmarflee所说)是如何保护控制器的典型示例,但这并不总是满足您的要求(例如,如果您通过其他方式暴露您的模型,例如,如果您是还暴露了WCF服务。)
更全局和更灵活的方法是在某处需要安全服务(您可以选择在哪里,但通常在控制器或存储库库中),然后以某种方式传递用户上下文(通过params或构造函数)。是的,这意味着您必须确保在每个操作中调用该服务,但除非您决定使用某种面向方面的编程容器,否则很难避免这种情况。
答案 1 :(得分:1)
查看此post,其中介绍了如何使用操作过滤器为控制器操作提供授权。