视图模块:如何限制用户访问权限 -- views 领域 drupal 相关 的问题

Views module: How to limit access by user


8
vote

问题

中文

我正在使用视图模块来创建只有特定用户应该访问的视图。我知道视图包括角色或权限的访问控制,但我需要一些更细粒度的东西:基本上,我希望只能说用户"x" 和用户"y" 可以访问特定视图(或者某人站点管理员角色)。因此,这将功能非常类似于ACL模块如何为各个节点充当。

是创建自定义视图访问插件的最佳方法?我没有多少经验。

此外,我想知道使用一些验证使用一个验证来实现这一点(以便我不必创建几十个单独的视图)。例如,由于此视图将是特定节点路径上的选项卡,我想知道在该节点上设置一个用户的参考字段,指定谁可以看到视图。我只需要一种方法,以便只验证当前用户是否等于用户参考字段中指定的用户。

任何想法?或者我使这个比需要更复杂?

谢谢, 本

英文原文

I'm using the Views module to create a view that only specific users should be able to access. I know that Views includes access control by role or permissions, but I need something more fine-grained: Basically, I want to be able to say only user "x" and user "y" can access a particular view (or else someone with a site administrator role). So this would function very similar to how ACL module acts for individual nodes.

Is the best approach to create a custom views access plugin? I don't have much experience with this.

Also, I'm wondering about using an argument with some validation to accomplish this (so that I don't have to create dozens of separate views). For instance, since this view will be a tab on a specific node path, I'm wondering about setting up a user reference field on that node that specifies who could see the view. I'd just need a way for the view to only validate if the current user equals a user specified in the user reference field.

Any ideas? Or am I making this more complicated than it needs to be?

Thanks, Ben

  
     
     

回答列表

5
 
vote
vote
最佳答案
 

而不是对视图上的权限限制,您可以限制导致该视图的菜单项的权限(在节点上的选项卡或菜单回调)。您可以使用"默认值" 显示,无页面显示(因此用户不能弄清楚它的路径)。然后在你的 page callback 对于菜单项只致电 views_embed_view 显示看法。似乎在菜单项上的处理权限可能比写入新插件的更容易的视图(尽管插件对他人有所帮助)。

 

Instead of limiting permissions on the View, you could limit permissions on the menu item that leads to that view (be it a tab on a node or a menu callback). You could create your view with just a "Defaults" display and no Page display (so users can't just figure out the path to it). Then in your page callback for the menu item just call views_embed_view to display the view. It seems like handling permissions on a menu item might be easier than writing a new plug-in for Views (though a plug-in could be helpful for others).

 
 
       
       
6
 
vote

尝试查看访问回调模块。

提供基于回调的访问控制进行视图。

可用的回调函数由模块使用 hook_views_access_callbacks() 函数(与 998876668 )相同,然后可以在视图的"访问限制" 配置中设置。

 

Try the Views Access Callback module.

Provides callback-based access control for Views.

Available callback functions are defined by modules using hook_views_access_callbacks() function (in the same way as in hook_perm()), then could be set in the view's "Access restrictions" configuration.

 
 
 
 
2
 
vote

我必须缺少一些东西,但听起来你会创造一个新角色并添加这些用户。然后使用视图'访问:角色特征。

如果您需要将访问权限绑定到内容中的某些内容,我将使用自定义视图访问权限,我发现第一次疼痛设置,但欣赏一次工作的灵活性。如果视图正在生成菜单项,则不会出现视图未通过访问功能。

如果您只隐藏一个菜单项,那么我似乎仍然运行的视图,用户可以调整URI以查看数据。

jerry

 

I must be missing something, but it sounds like you would create a new role and add these Users. Then use the Views' Access: Role feature.

If you do need to tie the Access rights to something in content, I would use a custom Views access, which I found a pain setting up the first time, but appreciate the flexibility once working. If the View is generating the Menu Item, it will not appear if the View does not pass the access function.

If you are only hiding a menu item, it would seem to me that the view would still run and a User could tweak a URI to view the data.

Jerry

 
 
1
 
vote

如何使用自定义权限模块为您的目的创建一些专门的新权限,然后使用用户权限模块为单个用户分配这些新权限?

自定义权限模块非常重量轻。但是,我不太确定用户权限模块,因为它基本上为场景后面的每个用户创造了新角色(这些角色在主权限页面上不可见)。如果您有很多用户,这可能会使您的角色和user_Roles表的大小逐渐提高。

 

How about using the Custom Permissions module to create some new permissions specifically for your purpose, and then using the User Permissions module to assign those new permissions to individual users?

The custom permissions module is very lightweight. I'm not so sure about the User permissions module though, since it essentially creates a new role for each user behind the scenes (these roles are not visible on the main permissions page). If you have a lot of users, this may beef up the size of your roles and user_roles tables a little.

 
 
   
   
0
 
vote

对,这更有意义。我想你可以(可能,不是100%确定)使用视图和一个论点。将参数设置为从当前登录用户中获取的用户标识,并使默认参数显示任何内容。这应该能够这样做,虽然我不知道是有多安全的公平。如果你试一试,请回复并让我知道你的进度。

 

Right, that makes more sense. I think you could (possibly, not 100% sure) use a View and an argument. Set the argument to be a user id taken from the currently logged in user and make the default argument display nothing. That should be able to do it, although I don't know how secure it would be to be fair. If you give it a try, post back and let me know your progress.

 
 
 
 
0
 
vote

如果您想要在视图中组合不同的访问插件,您可能希望查看查看访问权限许多模块。

 

If you're wanting to combine different access plugins in Views, you may want to have a look at the Views access many module.

 
 

相关问题

2  通过参数在7.x视图中阻止  ( Passing arguments to block in 7 x views ) 
我有一个块视图设置,以便按任期获取最新的3个博客文章。我正在提供以下内容的默认参数: $path = drupal_get_path_alias($_GET['q']); $path = explode('/', $path); if($path[0] == 'laws' || $path[0] == 'issu...

0  显示具有视图格式的一个节点的多行中的字段  ( Displaying fields in multiple rows for one node with views format ) 
在一个视图中,我需要在多行中显示节点的字段,我如何实现这一点? 节点包含: port1name port1arrival port1departure Port2 Port2Arrival port2departure port3name port3arrival port3departure 我需...

5  意见3关系处理程序  ( Views 3 relationship handler ) 
我正在尝试在Drupal 7中编写一个views 3的关系处理程序,但甚至没有开始。 基本上,我有一束各种类型的节点,所有类型都与它们附加相同的字段。此字段是链接到CiviCrm联系人的参考字段 - 但这并不重要,就像基本上这些字段只包含整数。 现在,让我们说我有一个内容类型'故事'的节点,它的参考字段包含整数,哦,...

1  在节点中,如何通过节点引用引用与当前用户相关联的节点的字段的值?  ( Within a node how can i reference the value of a field of a node associated to ) 
我正在为客户创建一个客户外联网。用户是我的客户客户。在页面节点的正文中,我需要显示当前用户所属的客户(公司)的ID。 这是到目前为止我如何设置它: Drupal 7 我有一个客户内容类型,具有一个名为customer_id的字段(以及其他东西)。 我已将一个节点参考字段添加到引用一个客户节点的用户字段中。 (换...

3  在Drupal Commerce中格式化货币  ( Formatting currency in drupal commerce ) 
我在drupal 7中使用视图和drupal Commerce以显示产品的列表目录(书籍)。 默认情况下,价格列是格式化的"12.34 zar" ,这是一个只在南非兰特的国际货币贸易环境中真正使用的格式。如何覆盖格式,以便我可以将其显示为"R12.34" ,这是更常见的格式。 ...

1  允许用户创建计算的视图  ( Allowing users to create calculated views ) 
我正在使用视图3,我可以使用推荐给我的"视图自定义字段" 模块在字段上进行一些数学。 它完美地工作,并确实是我想要的事情,但我的问题是我需要授予对用户的访问来创建它们的视图和计算。视图自定义字段不是真正的数学实地,它基本上允许他们直接在我的网站上执行PHP代码,我怀疑是危险的。 此外,另一个要求是它们不直接修改实...

1  显示通过关系在另一个节点上引用的节点的字段  ( Display a field of a node that is referenced on another node via a relationship ) 
我有两个内容类型,"商店" 和"提供" 。在"提供" 内容类型中,存在引用"存储" 节点的CCK节点参考字段类型。所以基本上,我创建一个商店,如果商店有优惠,我创建了"提供" 节点,然后选择它关联的商店。 我有一个显示存储列表的视图(默认词汇表视图)。我想显示与它相关的任何优惠的节点标题,但我无法弄清楚如何进行。 我...

1  浏览器的地址栏中的RSS图标  ( Rss icon at browsers address bar ) 
i不使用drupal 7,其默认方式。我在前面页面上不发布,因为我使用前页的视图。 我从视图中产生RSS源。 如何使RSS图标出现在浏览器的地址栏中? ...

1  过滤下拉目的数月  ( Display months in dropdown for filtering ) 
我想通过内容类型创建视图。在此页面上,我想要一个选择的月份列表以按月过滤内容。 是否有任何模块或如何通过视图来实现这一目标? ...

3  预处理视图字段  ( Preprocess view fields ) 
我有一个视图,一些字段我主题 views-view-fields--MYVIEW.tpl.php 。我使用 phptemplate_preprocess_views_view_unformatted__MYVIEW() 以预处理一些 99887669 在模板之前将模板与清洁。但我不知道预处理领域的正确方法。 我可以...

0  管理员用户可以添加记录,最终用户可以查看它们  ( Administrator users can add records end users can view them ) 
管理员用户如何将一些记录添加到数据库中(通过表格),最终用户如何在前端查看它们? 管理员用户将通过管理面板中的表单添加培训类的记录。 最终用户将在块中查看前端的培训类列表。 如何实现这些任务? ...

0  仅显示未读内容;一旦读取或选项删除项目以删除项目  ( Show only unread content remove item once read or option to remove items ) 
我需要一个仅显示未读内容的视图,或者提供功能以在访问节点后删除在视图中列出的项目。或者,"X" 按钮可为用户手动删除项目。 例如,视图显示文章1,2,3& 4. 一旦我访问了第1条& 4视图现在只显示2& 3. ...

0  按标记分组的节点视图,包括不标记元素  ( View of nodes grouped by tag including not tagged elements ) 
我的功能包括自定义代码,一些视图,内容类型和分类词汇表。 概述页面应列出其分类项(标签)分组的所有内容。第一个组应该是"没有标记" 。 如何添加"未标记" 组? ...

2  在同一节点和视图中使用多个模板  ( Using multiple templates for the same node views ) 
好的,我的问题是,我希望能够在Drupal 7站点上以简单的形式管理事件。我创建了相关的内容类型并插入了一些虚拟内容,一切都很好。然后,我继续创建用于以各种形式显示此操作的视图(1即将到来的事件查看,1用于存档/过去的事件)。这些似乎再次工作。现在问题来了,当我想在此内容类型的页面上显示此内容类型的视图时,因此您转到...

2  嵌入视图并从CCK字段设置过滤器  ( Embed view and set filter from cck field ) 
我创建了一个带3个过滤器的视图。我嵌入了我tpl.php文件中的视图以获取内容类型。我的问题是,如何使用CCK字段的值设置一些过滤器? 这是我使用的代码: $view = views_get_view('view_name'); $view->set_display('default'); $view->filt...

2  画廊与专辑封面  ( Gallery with album covers ) 
我目前有两个节点类型:相册(CCK)和图像(使用图像模块,使用图像模块)。 用户创建一张专辑,只需标题。当它们创建图像时,相册是节点引用。 我有专辑,我想从每个专辑中挑选一个图像,以显示为封面照片。我不能只将CCK字段添加到专辑中;图像需要出现在相册图像的视图中,并且可以投票和评论每个图像,以及有自己的引用(标签)。...

2  是否可以将RSS源和其他故事组合在同一视图中?  ( Is it possible to combine rss feeds and other stories in the same view ) 
我订阅了一个RSS Feed,我想用与一些用户生成的故事相同的视图发布,我希望两种类型的内容显示为统一列表。可以很容易完成吗? ...

2  合并分析  ( Consolidated analysis ) 
使用用户点用于drupal 6的模块,如何创建一个显示点余额的表对于所有用户,他们获得了信用卡或借方,谁做了? 是否有任何特殊模块可以这样做? ...

12  什么是最好的方式,以方便地通过视图迭代的结果?  ( What is the best way programmatically to iterate through a views results ) 
给出了一个名为'子女'的视图(有两个字段:child_node_id和sentraing_order_value)是什么是通过视图结果迭代的最佳方式:给定"默认" 和包含父级的参数的视图结果集节点ID? 以前,我使用类似于以下内容的代码在块中使用视图: if ( arg(0) == 'node' && is_nu...

1  RSS在首页源  ( Rss feeds in the front page ) 
如何设置rss effers在我的级别上放置 饲料是通过视图产生的。 对FrontPage中不存在Feed Link。 HTML5的正确语法是什么? ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.