spring-mvc - 使用 spring security 保护 liferay portlet

标签 spring-mvc spring-security liferay portlet

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

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

我想知道以下内容:

  1. 关于实现 portlet 授权的最佳实践。
  2. 在 Dispatch 层或 Service 层实现安全性哪个更好?
  3. 调度层或服务层如何实现安全?

请考虑我的应用程序基于用例的安全性。

谢谢!

最佳答案

我最喜欢的答案在这里匹配:“视情况而定”。

这是它所依赖的:

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

如果您想使用 Liferay 的 permissionChecker(它很容易获得并且运行时可配置),您应该在非本地服务方法中执行此操作。我倾向于推荐这个,因为你可以利用 Liferay's permissioning system - 无论如何,您已经拥有由 Liferay 管理的用户身份、角色、成员资格等。创建一个自定义角色,授予自定义权限,您就可以在运行时配置所有内容。

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

也就是说,我从未将 Spring Security(尤其是标签库)与 Liferay 的权限系统联系起来。

关于spring-mvc - 使用 spring security 保护 liferay portlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16401616/

相关文章:

java - Google Oauth 登录窗口无法正常工作

elasticsearch - Liferay Search没有给出同义词搜索结果?

Tomcat集群中的Spring Websocket

http - 错误 : universal match pattern ('/**' ) is defined before other patterns in the filter chain, 导致它们被忽略

java - RooJavaBean 方法 getId() 不会覆盖抽象方法 Persistable.getId()

jar - 为不同的liferay portlet开发一个通用的jar库

eclipse - LifeRay:当我构建 war 时,我的更改被删除

spring - :selected a number in a select/option with Thymeleaf doesn't work

Spring OAuth2多服务器注释配置(资源和授权)

java - 为什么spring security无法获取用户名?