我正在开发一个wicket应用程序(目前正在使用wicket 1.5),它即将获得类似博客的功能。用户可以发布内容或将某些业务对象标记为公共,其他用户可以对这些内容进行评论。只允许拥有用户编辑这些业务对象或帖子。 我知道有几个框架基于当前用户提供隐藏/显示或切换面板功能,但是有什么可以用来做这个不仅基于用户而且基于上下文?我知道我必须提供我的业务逻辑,但我更愿意跳过所有重复的样板代码,所以即使是AOP驱动的方法也可以做到这一点,但因为我以前从未使用过,我不知道知道。
修改:有关该方案的更多详细信息:
在应用程序中,任何(已登录)用户都可以输入让我们说的食谱,他可以将其标记为公开(可以被任何人阅读)或私有(只能由他自己阅读)。任何登录用户都可以评论任何公共配方(公共或私人)。私人评论只能由评论者和食谱所有者阅读。只有所有者才能编辑食谱。只有评论者可以编辑他的评论。只有食谱所有者或评论者才能删除评论。 所以基本上我只是想通过一个基于上下文的角色(“所有者”)来扩展经典的基于角色的安全模型的想法,并且通过写这个似乎唯一的wicket边缘就是这样,我更喜欢一个基于框架的解决方案,它集成了很好的wicket(甚至是wicketstuff已经提供集成的框架)。
答案 0 :(得分:3)
如果您正在寻找支持基于实例的授权的安全框架,您可以查看Spring Security ACLs。
但除非你想构建一些像Unix文件系统一样灵活和通用的东西,否则我认为这种解决方案是不必要的。
无论如何,为了“整合”你选择的任何解决方案到Wicket页面,你可以做一些简单的事情,比如覆盖`onConfigure()'方法(在页面或组件上),验证用户权限并设置可见/不可见的东西,根据需要启用/禁用。
@Override
public void onConfigure() {
boolean isAuthor = getCurrentUser().equals(post.getAuthor());
deleteButton.isVisible(isAuthor);
editLink.isEnabled(isAuthor);
}