Drupal 7 通过Drupal 7中的特定用户字段进行站点访问控制

Drupal 7 通过Drupal 7中的特定用户字段进行站点访问控制,drupal-7,drupal-permissions,Drupal 7,Drupal Permissions,我试图仅在其中一个用户字段具有特定值时才授予用户访问该站点的权限 如果不是,则站点应显示拒绝访问 有没有一种有效的方法来实现这一点 谢谢以下是您的方法 选项1 创建一个自定义角色,比如说“受限访问”,在网站中没有权限(编辑/删除/查看),除了创建他的帐户,这将是用户的默认角色 然后创建一个自定义角色,比如说“高级访问”,允许查看您的内容(或其他内容) 在“帐户设置”中,添加自定义字段(“访问”)和您希望的值(“有限”、“高级”) 添加rulles模块并创建一个自定义rulle,在创建/更新帐户时

我试图仅在其中一个用户字段具有特定值时才授予用户访问该站点的权限

如果不是,则站点应显示拒绝访问

有没有一种有效的方法来实现这一点


谢谢

以下是您的方法

选项1

创建一个自定义角色,比如说“受限访问”,在网站中没有权限(编辑/删除/查看),除了创建他的帐户,这将是用户的默认角色

然后创建一个自定义角色,比如说“高级访问”,允许查看您的内容(或其他内容)

在“帐户设置”中,添加自定义字段(“访问”)和您希望的值(“有限”、“高级”)

添加rulles模块并创建一个自定义rulle,在创建/更新帐户时,如果字段_access==premium,则将角色更新为“premium access”

完成此操作后,您可以从用户角色管理用户

选项2

再次使用Rules模块,您可以检查您的用户在其配置文件中是否具有所需的值,并将其重定向到您的页面

选项3

hook_init()和/或hook_boot()检查用户帐户配置文件字段中的值是否正确并重定向他,类似于:

function hook_init(){
    global $user;
    $user_data=user_load($user->id);
    if($user_data->field_access['LANGUAGE_NONE'][0]['value']=='limited'){
        drupal_go_to('/content/limited');
    }
}
function hook_init(){
    global $user;
    $user_data=user_load($user->id);
    if($user_data->field_access['LANGUAGE_NONE'][0]['value']=='limited'){
        drupal_go_to('/content/limited');
    }
}