Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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
Php 用户关系和用户访问控制_Php_Drupal_Drupal 6 - Fatal编程技术网

Php 用户关系和用户访问控制

Php 用户关系和用户访问控制,php,drupal,drupal-6,Php,Drupal,Drupal 6,用户关系可以很好地控制节点根据已批准的用户列表访问内容 但我遇到的问题是,我还想使用核心配置文件模块,并允许通过用户关系连接的用户查看彼此的用户配置文件。我花了2个小时试图找出一种方法,不允许用户伪造URL并查看任何用户帐户(当前查看用户配置文件需要访问用户配置文件权限) 我想出了几个解决办法来解决这个问题。我想做的是,如果URL是伪造的,并且请求的用户没有访问权限,则提供403页面 以下是我的想法: 禁用访问用户配置文件权限 在自定义模块中调用hook\u menu\u alter或hook\

用户关系可以很好地控制节点根据已批准的用户列表访问内容

但我遇到的问题是,我还想使用核心配置文件模块,并允许通过用户关系连接的用户查看彼此的用户配置文件。我花了2个小时试图找出一种方法,不允许用户伪造URL并查看任何用户帐户(当前查看用户配置文件需要访问用户配置文件权限)

我想出了几个解决办法来解决这个问题。我想做的是,如果URL是伪造的,并且请求的用户没有访问权限,则提供403页面

以下是我的想法:

  • 禁用访问用户配置文件权限
  • 在自定义模块中调用hook\u menu\u alter或hook\u menu\u link\u alter
  • 将access回调更改为自定义函数,检查用户关系
  • 如果不存在关系,则返回403,否则返回用户视图
  • 我想了解一下这方面的想法,因为我想在用户配置文件页面上进行检查。hook_init()看起来太结实了


    这是一个有效的解决方案吗?思想?或者是否有一个模块可以让我快速完成此操作?

    您需要的一切:+

    我不希望用户帐户成为节点,但这增加了管理节点的开销,而节点可能只是用户帐户中的几个配置文件字段。实际上,用户帐户应该是节点。他们基本上是在7。但我明白了。我的意见是,在编写自己的代码之前,先尝试现有的解决方案,看看它是如何工作的。这是我的建议。除此之外,我将重写hook_user,$op=='view',并针对代理$user对象测试关系。如果需要的话,再上403。这种方法允许您使用将要加载的所有数据,而无需在菜单访问回调中进行任何重复加载。好吧,假设我返回到内容配置文件-如何使用视图和视图路径保护内容,以便在所述用户不应看到该用户的内容时拒绝访问?我希望这一切都发生在幕后,用户不必使用隐私控制。现在我正在使用用户关系来创建一种相互关系,一种查看内容的隐式权利。我希望使用arg(1)中的UID,但这很棘手。这个网站上的所有内容都是私有的-类似于Facebook。我一直在想安全问题,这样你就不能只更改URL而看到不应该看到的内容。默认情况下,视图中的权限非常简单,但是如果我推荐的任何模块都提供对视图访问选项的特殊权限,请使用它们。在hook_user中手工操作,我不知道用户关系API,所以如果不查找,我会说查找一个函数,告诉您两个用户是否相关。应该很简单。再一次,我建议你进入那里,在stie的开发副本上尝试一下,看看在启用和配置模块的情况下,你所有的选项都是什么。我认为hook\u menu\u alter或link\u alter应该可以很好地完成这个任务。一旦您使用这些钩子控制了这些路径,您就可以做任何您想做的事情,包括检查自定义权限。