Model view controller 如何限制用户对对象的访问?

Model view controller 如何限制用户对对象的访问?,model-view-controller,authorization,access-control,Model View Controller,Authorization,Access Control,大家好,Sitepoint向导 假设我们有一个管理应用程序,它有多个用户和各种对象。我想做的是控制对象本身内部的访问——也就是说,对于一种类型的用户,它的行为是一种方式,对于其他用户,它的行为是另一种方式。例如 Mike总监可以覆盖接待用户Sally的注册日期。人们会认为迈克可以在过去或将来设定任何日期。然后我们有工资单用户Steve,他也可以修改Sally的注册日期,但仅限于过去直到(例如)一年前的日期。为了增加趣味性,我们还有人力资源经理玛丽,她也可以修改Sally的注册日期,但仅限于从20

大家好,Sitepoint向导

假设我们有一个管理应用程序,它有多个用户和各种对象。我想做的是控制对象本身内部的访问——也就是说,对于一种类型的用户,它的行为是一种方式,对于其他用户,它的行为是另一种方式。例如

Mike总监可以覆盖接待用户Sally的注册日期。人们会认为迈克可以在过去或将来设定任何日期。然后我们有工资单用户Steve,他也可以修改Sally的注册日期,但仅限于过去直到(例如)一年前的日期。为了增加趣味性,我们还有人力资源经理玛丽,她也可以修改Sally的注册日期,但仅限于从2007年6月23日到现在一个月的日期

我如何对访问限制进行编程,以便在前端,表单控件受到最小和最大日期的限制,而在后端,验证程序检查输入的日期以确保它位于这些日期之间?我显然需要能够调整每个用户类型的最小和最大日期。其他对象可能具有不同的参数—例如,折扣字段上的最大金额或加班的每周天数


我以不同的方式问过这个问题,但每次我都被实现所困扰。我目前正在开发一个基于php/MySQL的web应用程序,但是非常欢迎来自其他平台的想法和评论!这次我看的是第一原则,所以不管你的背景是什么,如果你有任何想法,请让我知道!您甚至将这种类型的访问控制称为什么…?

根据应用程序的基础,您可以在应用程序启动时请求凭据,根据需要访问的用户,您可以加载包含不同设置的不同xml文件

至于安全问题,请确保用户无法访问不同的xml文件

编辑:
因为您使用的是MySQL,所以可以这样做
假设您有一个包含以下字段的用户表:UserId、UserName、RestrictionId
并且有一个如下的限制表:RestrictionId、FieldName、FieldCondition。

这样,在php应用程序中,当用户通过身份验证时,您可以在字段上获取正确的“限制”,并在代码中应用它们。如果有多个字段需要不同的规则,那么只需使用正确的RestrictionId添加它们即可


这个数据库设计还远远不够完美,我很肯定你可以做得更好,这取决于你的应用程序是如何建立的,你可以在应用程序开始时要求提供凭据,并且取决于谁需要访问,你可以加载一个包含不同设置的不同xml文件

至于安全问题,请确保用户无法访问不同的xml文件

编辑:
因为您使用的是MySQL,所以可以这样做
假设您有一个包含以下字段的用户表:UserId、UserName、RestrictionId
并且有一个如下的限制表:RestrictionId、FieldName、FieldCondition。

这样,在php应用程序中,当用户通过身份验证时,您可以在字段上获取正确的“限制”,并在代码中应用它们。如果有多个字段需要不同的规则,那么只需使用正确的RestrictionId添加它们即可


这个数据库设计还远远不够完美,我很肯定你可以做得更好,因为你已经在使用MySql数据库了。您可以在数据库本身中维护UserRole主表详细信息。基于登录加载用户角色数据,然后您可以轻松地验证用户所做的相应更改。

因为您已经在使用MySql db。您可以在数据库本身中维护UserRole主表详细信息。基于登录加载用户角色数据,然后您可以轻松验证用户所做的相应更改。

感谢您的回复-您是否有任何关于如何存储角色数据的提示?我习惯于在数据库中使用布尔类型ALLOW/DENY,那么我如何在数据库中存储ALLOW/DENY和“-1年”、“2007-06-23”、“<50”等不同的内容呢?谢谢你的回复-你有关于如何存储角色数据的指示吗?我习惯于在数据库中使用布尔类型ALLOW/DENY,那么如何在数据库中同时存储ALLOW/DENY和“-1年”、“2007-06-23”、“<50”等不同的内容呢?您是否可以链接到xml文件的结构示例?我可能会使用数据库,但原理是一样的。感谢为DB提供了一个示例。感谢您的编辑-如果我能在某处看到这种类型的东西,我会感觉更舒服-您知道有任何脚本、框架、应用程序已经这样做了,以便我可以检查它吗?没有。我很抱歉。但是我不认为这太难实现,你有没有链接到xml文件的结构示例?我可能会使用数据库,但原理是一样的。感谢为DB提供了一个示例。感谢您的编辑-如果我能在某处看到这种类型的东西,我会感觉更舒服-您知道有任何脚本、框架、应用程序已经这样做了,以便我可以检查它吗?没有。我很抱歉。但我不认为这会太难落实。如果你的问题解决了,就把sur标记为已回答。如果你的问题解决了,就把sur标记为已回答。