Authentication liferay页面中的身份验证

Authentication liferay页面中的身份验证,authentication,liferay,liferay-6,Authentication,Liferay,Liferay 6,我们在liferay页面上有一个portlet。我们希望对执行的每个操作方法设置权限。例如,在A页上,我们得到了一个XYZ portlet。现在,我们希望无论何时从这个portlet执行任何操作,我们都要检查用户是否有角色来执行这个操作 这不是一个很好的方法,因为我们有大约20个这样的页面和portlet 我们是否可以使用某种过滤器,以便检查每个操作请求是否用户有权访问内容 谢谢…您可以滥用一些现有的portlet权限,如“添加到页面”,并将其设置为应该调用操作的角色。 并在渲染和操作阶段验证“

我们在liferay页面上有一个portlet。我们希望对执行的每个操作方法设置权限。例如,在A页上,我们得到了一个XYZ portlet。现在,我们希望无论何时从这个portlet执行任何操作,我们都要检查用户是否有角色来执行这个操作

这不是一个很好的方法,因为我们有大约20个这样的页面和portlet

我们是否可以使用某种过滤器,以便检查每个操作请求是否用户有权访问内容


谢谢…

您可以滥用一些现有的portlet权限,如“添加到页面”,并将其设置为应该调用操作的角色。 并在渲染和操作阶段验证“具有用户必要的权限”


或者,您可以创建新权限,并通过portlet配置对其进行配置。这种方法更简洁,但难度更大。

您可以滥用一些现有的portlet权限,如“添加到页面”,并将其设置为应该调用操作的角色。 并在渲染和操作阶段验证“具有用户必要的权限”


或者,您可以创建新权限,并通过portlet配置对其进行配置。这种方法更简洁,但难度更大。

您可以滥用一些现有的portlet权限,如“添加到页面”,并将其设置为应该调用操作的角色。 并在渲染和操作阶段验证“具有用户必要的权限”


或者,您可以创建新权限,并通过portlet配置对其进行配置。这种方法更简洁,但难度更大。

您可以滥用一些现有的portlet权限,如“添加到页面”,并将其设置为应该调用操作的角色。 并在渲染和操作阶段验证“具有用户必要的权限”

或者,您可以创建新权限,并通过portlet配置对其进行配置。这条路比较干净,但有难度。

我的想法

使用筛选器拦截所有请求 您可以向Liferay Servlet添加一个过滤器来检查每个请求。 为此,您可以使用
挂钩插件

看看这个:

过滤器的问题是您无法访问主题显示或使用PortalUtil.getUser(请求)

因此,您必须像这样使用工作环境:

private User _getUser(HttpServletRequest request) throws Exception {
    HttpSession session = request.getSession();

    User user = PortalUtil.getUser(request);

    if (user != null) {
        return user;
    }

    String userIdString = (String) session.getAttribute("j_username");
    String password = (String) session.getAttribute("j_password");

    if ((userIdString != null) && (password != null)) {
        long userId = GetterUtil.getLong(userIdString);

        user = UserLocalServiceUtil.getUser(userId);
    }

    return user;
}
筛选请求 要筛选请求,您必须获得:

  • 页面id(Liferay中的布局id)
  • portlet id
  • portlet生命周期
再次使用过滤器是一件痛苦的事,因为你可以得到
主题的显示
。使用
主题显示
,这些参数很容易获取(使用真实对象实例)

因此,您必须在请求中获取该参数

final String portletId = ParamUtil.get((HttpServletRequest) servletRequest, "p_p_id", "");
final String layoutId = ParamUtil.get((HttpServletRequest) servletRequest, "plid", "");
final String portletLifecycle = ParamUtil.get((HttpServletRequest) servletRequest, "p_p_lifecycle", "");
生命周期详细信息:

portletLifecycle
是一个
int
,值的含义是:

  • 0:
    渲染
  • 1:
    操作
    (您感兴趣的操作)
  • 2:
    资源
我认为,通过这些数据,您可以定义用户是否可以执行操作

您可以从用户获取用户角色。 您可以获得链接到请求的当前页面和portlet。 您可以知道该请求是否为行动请求

祝Liferay好运。

我的主意

使用筛选器拦截所有请求 您可以向Liferay Servlet添加一个过滤器来检查每个请求。 为此,您可以使用
挂钩插件

看看这个:

过滤器的问题是您无法访问主题显示或使用PortalUtil.getUser(请求)

因此,您必须像这样使用工作环境:

private User _getUser(HttpServletRequest request) throws Exception {
    HttpSession session = request.getSession();

    User user = PortalUtil.getUser(request);

    if (user != null) {
        return user;
    }

    String userIdString = (String) session.getAttribute("j_username");
    String password = (String) session.getAttribute("j_password");

    if ((userIdString != null) && (password != null)) {
        long userId = GetterUtil.getLong(userIdString);

        user = UserLocalServiceUtil.getUser(userId);
    }

    return user;
}
筛选请求 要筛选请求,您必须获得:

  • 页面id(Liferay中的布局id)
  • portlet id
  • portlet生命周期
再次使用过滤器是一件痛苦的事,因为你可以得到
主题的显示
。使用
主题显示
,这些参数很容易获取(使用真实对象实例)

因此,您必须在请求中获取该参数

final String portletId = ParamUtil.get((HttpServletRequest) servletRequest, "p_p_id", "");
final String layoutId = ParamUtil.get((HttpServletRequest) servletRequest, "plid", "");
final String portletLifecycle = ParamUtil.get((HttpServletRequest) servletRequest, "p_p_lifecycle", "");
生命周期详细信息:

portletLifecycle
是一个
int
,值的含义是:

  • 0:
    渲染
  • 1:
    操作
    (您感兴趣的操作)
  • 2:
    资源
我认为,通过这些数据,您可以定义用户是否可以执行操作

您可以从用户获取用户角色。 您可以获得链接到请求的当前页面和portlet。 您可以知道该请求是否为行动请求

祝Liferay好运。

我的主意

使用筛选器拦截所有请求 您可以向Liferay Servlet添加一个过滤器来检查每个请求。 为此,您可以使用
挂钩插件

看看这个:

过滤器的问题是您无法访问主题显示或使用PortalUtil.getUser(请求)

因此,您必须像这样使用工作环境:

private User _getUser(HttpServletRequest request) throws Exception {
    HttpSession session = request.getSession();

    User user = PortalUtil.getUser(request);

    if (user != null) {
        return user;
    }

    String userIdString = (String) session.getAttribute("j_username");
    String password = (String) session.getAttribute("j_password");

    if ((userIdString != null) && (password != null)) {
        long userId = GetterUtil.getLong(userIdString);

        user = UserLocalServiceUtil.getUser(userId);
    }

    return user;
}
筛选请求 要筛选请求,您必须获得:

  • 页面id(Liferay中的布局id)
  • portlet id
  • portlet生命周期
再次使用过滤器是一件痛苦的事,因为你可以得到
主题的显示
。使用
主题显示
,这些参数很容易获取(使用真实对象实例)

因此,您必须在请求中获取该参数

final String portletId = ParamUtil.get((HttpServletRequest) servletRequest, "p_p_id", "");
final String layoutId = ParamUtil.get((HttpServletRequest) servletRequest, "plid", "");
final String portletLifecycle = ParamUtil.get((HttpServletRequest) servletRequest, "p_p_lifecycle", "");
生命周期详细信息:

portletLifecycle
是一个
int
,值的含义是:

  • 0:
    渲染
  • 1:
    操作
    (您感兴趣的操作)
  • 2:
    资源
我认为,通过这些数据,您可以定义用户是否可以执行操作

您可以从用户获取用户角色。 您可以获得链接到请求的当前页面和portlet。 你可以知道,如果