Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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
在drupal中设置页面访问权限_Drupal - Fatal编程技术网

在drupal中设置页面访问权限

在drupal中设置页面访问权限,drupal,Drupal,我是drupal的新手。我想这是一个非常愚蠢的问题。 我已经启用了PHP过滤模块,这样我就可以用自己的PHP代码创建一个新页面。我希望只有经过身份验证的用户才能访问此特定页面,而匿名用户则看不到此页面。我怎样才能做到这一点?我可以为drupal中的各个页面设置权限吗?或者可以识别匿名用户试图通过PHP代码访问当前页面吗?既然您提到您是Drupal新手,请注意,对自定义代码使用PHP过滤器被认为是不好的做法。这是一个黑客行为,也是一个安全问题 编写自定义模块要好得多,它可以实现自己的自定义权限,您

我是drupal的新手。我想这是一个非常愚蠢的问题。
我已经启用了PHP过滤模块,这样我就可以用自己的PHP代码创建一个新页面。我希望只有经过身份验证的用户才能访问此特定页面,而匿名用户则看不到此页面。我怎样才能做到这一点?我可以为drupal中的各个页面设置权限吗?或者可以识别匿名用户试图通过PHP代码访问当前页面吗?

既然您提到您是Drupal新手,请注意,对自定义代码使用PHP过滤器被认为是不好的做法。这是一个黑客行为,也是一个安全问题

编写自定义模块要好得多,它可以实现自己的自定义权限,您可以检查,等等。有一个很好的方法,您可以查看它的外观。显然,也可以查看手册。这真的没有听起来那么难

回到你的问题上来。您可以在PHP筛选页面中放置以下行:

global $user;

这将允许您访问表示当前用户的对象
$user->roles
是表示用户角色的数组。您只需检查它是否有经过身份验证的用户(或稍好一点-您创建的自定义角色)。

为了防止匿名用户访问页面,您可以使用以下php代码:

<?php
// we have to access the content of the global-scope variable $user
global $user; 

//Checking if the user is registered
if (in_array('authenticated user', $user->roles)==FALSE) {
header('Location:/content/restrictedaccess') ;
}
?>

//页面内容

--
更多关于我如何用Drupal来创建我的站点的信息:

阅读上面的答案,你也可以考虑现成的模块。它符合我的要求,如果您想避免PHP过滤,并且不想创建自己的模块(无论出于何种原因),您可以查看。

谢谢Eli:)对不起,我很晚才感谢您。我非常认真地接受了你的警告:)你的建议和Jordi的代码让它变得非常简单!虽然我很快就用“简单访问”模块取代了它。它实际上和它所说的一样简单,并且完全符合我的要求。我将使用您的示例模块链接在将来创建自己的模块。这是一个很好的开端!