我正在使用 Acegi (Spring) 安全性构建具有基于角色的访问控制的 webapp。所以我有不同的用户角色:ROLE_ADMIN
,ROLE_USER
等等。
但是,我需要实现各种用户约束。
让我们考虑一个例子:
假设有一个用户可以在线观看电影的网站。有具有角色的用户
ROLE_STANDARD_USER
和ROLE_VIP_USER
. 标准用户每周可以看 3 部电影,vip 用户可以每周看 10 部电影,还有其他一些特权。标准用户组中有一个用户,我想每周向他提供 2 部电影。允许的电影数量有时可能会发生变化。
此外,还有各种类型的电影:奇幻、喜剧、经典、新电影等。我希望某些用户,无论其角色如何,都只能访问某些类别。可以动态创建和删除类别。
是否有实施此类用户约束的标准做法?
可以/应该使用 Spring Security 角色和权限来完成吗?
或者我需要考虑向我的应用程序添加基于规则的引擎?
谢谢你。
编辑:
上面的例子是虚构的,我的项目是关于授予学生远程访问各种网络(和其他)设备的权限。但是,用户约束的类型很可能是相同的。
不幸的是,用户访问和约束的模型并不完整和稳定。在不久的将来,我可能会被告知为用户实施各种额外的约束,这些现在还不知道。
因此,我现在想选择一条路径,以便将来轻松添加或更改新的用户约束,并且不需要对内部模型或数据库结构进行重大改革。如果可能的话。
编辑 2
目前,基本的用户约束是硬编码的(原型系统遗留下来的)。我想我会先尝试将它重构为某种参数化的业务服务对象,然后再思考我可以从那里去哪里。我还将考虑使用 Spring Security Authorization Decision Managers。
感谢您的所有建议!