Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何防止在Liferay中登录以外的来宾角色访问?_Security_Liferay_Liferay 6 - Fatal编程技术网

Security 如何防止在Liferay中登录以外的来宾角色访问?

Security 如何防止在Liferay中登录以外的来宾角色访问?,security,liferay,liferay-6,Security,Liferay,Liferay 6,我们计划使用Liferay 6.2实现公司内部门户。由于许多团队成员不在公司网络内,因此必须允许从互联网进行访问 现在我发现Guest角色有一个大问题,因为它1)可以访问Guest可查看的内容,而无需登录;2)这是上传文档时的默认选择 我真正需要的是,通常只有登录页面是可查看的,但所有其他网站和内容仅对登录用户可见,而无需明确地为每个项目正确分配权限 所以问题是,我是否可以阻止来宾角色访问登录页面之外的任何内容,也就是说,从门户内的所有内容中删除它 更新: 有人提议只使用私人网页。虽然这可能有

我们计划使用Liferay 6.2实现公司内部门户。由于许多团队成员不在公司网络内,因此必须允许从互联网进行访问

现在我发现Guest角色有一个大问题,因为它1)可以访问Guest可查看的内容,而无需登录;2)这是上传文档时的默认选择

我真正需要的是,通常只有登录页面是可查看的,但所有其他网站和内容仅对登录用户可见,而无需明确地为每个项目正确分配权限

所以问题是,我是否可以阻止来宾角色访问登录页面之外的任何内容,也就是说,从门户内的所有内容中删除它


更新:

有人提议只使用私人网页。虽然这可能有效,但据我所知,这意味着每个用户都必须是站点的成员。但是,现在不可能有一个站点结构,让不同的用户参与不同的站点,并且仍然能够查看公共信息(对所有登录的用户来说都是公共的)——或者我错了吗


更新2:


我同意这样一种解决方案,即必须通过钩子或liferay中的深层次更改,以编程方式阻止分配给来宾角色。然而,我喜欢反复检查这个管理任务,并考虑使用API的定期数据库作业或程序,该API检查与钩子周围的来宾角色的关系或错误的用户权限设置,然后再次删除它们。怎么做呢?

您只需删除所有公共页面。您创建的每个页面都应该是私有的。不用担心登录页面、重置密码和自我注册(如果允许),默认情况下它们是公共的。
希望这有帮助。

您仍然可以使用公共页面等,并禁用来宾对每个元素的
查看
权限,但登录页面及其资源除外

现在,正如您已经注意到的,在默认情况下,无论何时创建任何内容,来宾都会获得
查看
权限,这是一个重大问题


我建议您只需覆盖Liferay的核心Portlet的资源权限文件(ROOT/WEB-INF/classes/resource actions/中的文件)中的
值,即可删除这些默认值。如果您不清楚如何操作,请参阅,例如,此论坛主题:。

当通过私人页面上载文档时,权限实际上默认为“来宾”无法访问。如果您没有任何公共页面,这是最容易保证的

此外,您还可以在上载文档后访问API并更改默认权限(无需像默认值那样覆盖Liferay核心功能):只需在上载文档后立即使用设置所需权限的版本覆盖文档上载即可。这将捕获所有其他上传尝试,例如通过服务、Webdav等


编辑(在您的评论之后):添加到开发指南的链接。API的实际使用有点太多,无法在运行中更新此答案。你可能想看看像()这样的老例子来适应实际的API,但DevGuide将首先描述如何编写插件。

你可以将登录页面作为公共页面,将所有页面作为私有页面来实现它。@PankajKathiriya:请看我的更新。但这意味着,每个用户都必须是每个站点的成员?或者我可以允许那些普通登录用户的私人页面,并且另外有可能做更多事情的成员吗?是的。默认站点(或其他站点)可用于登录任何用户。并为会员用户提供特定的网站。这可能会起作用-你能给我举一个很好的例子吗,因为我对Liferay API完全没有经验…?好的,谢谢你提供的额外信息,我还没有尝试过,但我会接受的,因此目前为止。然而,一个相关的问题-我是否可以在数据库级别上进行额外检查,例如通过定期数据库作业,并删除来宾权限,以防它们通过某种被忽略的方式进入或以某种方式未被钩子正确允许?是的,当然。如何做到这一点对于这里的附加组件来说可能有点太多了,但我相信我在回答中链接的sevencogs示例提供了与API的一些介绍性联系