1

嗨 Sitepoint 向导人,

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

Mike 主管可以覆盖 Reception 用户 Sally 的注册日期。人们会假设迈克可以设置过去或未来的任何日期。然后我们有 Payroll 用户 Steve,他也可以修改 Sally 的注册日期,但仅限于(例如)一年前的过去日期。为了让事情更有趣,我们有人力资源经理 Mary,她也可以修改 Sally 的注册日期,但仅限于从 2007 年 6 月 23 日到现在一个月后的日期......

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

我以不同的方式问过这个问题,但每次我都被实施所困扰。我目前正在将其开发为基于 php/MySQL 的 Web 应用程序,但非常欢迎来自其他平台的想法和评论!这次我看的是基本原理,所以不管你的背景是什么,如果你有什么想法,请告诉我!您甚至将这种访问控制称为什么...?

4

2 回答 2

1

根据应用程序的基础,您可以在应用程序开始时要求提供凭据,并且根据需要访问的人员,您可以加载包含不同设置的不同 xml 文件。

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

编辑:
由于您使用的是 MySQL,因此您可以执行以下操作。
假设您有一个包含以下字段的用户表:UserId、UserName、RestrictionId。
并且有一个看起来像这样的限制表:RestrictionId、FieldName、FieldCondition。

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

这个数据库设计远非完美,我敢肯定你可以做得更好

于 2010-02-23T13:06:47.217 回答
0

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

于 2010-02-24T04:06:41.377 回答