3

我目前正在使用liferay portlet。Spring 安全性用于渲染层(在 jsp 页面中)。但是,这并不安全,因为我的调度控制器和服务没有任何安全/授权检查。

在我的应用程序中,Spring-MVC 控制器接收请求,并传递给服务层。服务层构建结果并将其传递给 JSP 页面。在 jsp 页面中,我们使用 spring-security taglibs 进行安全授权。

我想知道以下内容:

  1. 关于实施 Portlet 授权的最佳实践。
  2. 在调度层或服务层上实现安全性的更好选择是什么?
  3. 如何实现调度层或服务层的安全性?

请考虑我在用例基础上的应用程序具有安全性。

谢谢!

4

1 回答 1

1

我最喜欢的答案在这里匹配:“这取决于”。

这取决于它:

Liferay 默认对 *LocalService 没有任何权限检查 - 例如,如果您可以访问 API,您可以做任何您想做的事情。然而,远程服务应该在将服务的实际执行委托给本地服务之前检查权限。

如果你想使用 Liferay 的权限检查器(它很容易获得并且运行时可配置),你应该在非本地服务方法中这样做。我倾向于推荐这个,因为您将能够利用Liferay 的许可系统——而且您已经拥有由 Liferay 管理的用户身份、角色、成员资格等。创建一个自定义角色,授予自定义权限,并且您可以在运行时配置所有内容。

其次,虽然您肯定想检查后端服务中的权限,但您可能希望在 UI 层再次执行此操作:如果不允许用户操作某个对象,则您不想显示该按钮建议他们可以更改它,只是为了得到“权限被拒绝”的答复。

话虽如此,我从未将 spring 安全性(尤其是 taglibs)与 Liferay 的权限系统联系起来。

于 2013-05-07T07:52:27.187 回答