如何将登录表单添加到“拒绝访问”页面?


Answers:


4

这里的另一个解决方案是LoginToboggan模块。它为登录功能提供了许多不同的增强功能。

logintoboggan模块通过提供以下功能和可用性改进来对外部模块中的drupal登录系统进行一些修改:

  1. 允许用户使用其用户名或电子邮件地址登录。
  2. 允许用户立即登录。
  3. 在非登录(匿名)用户的拒绝访问页面上提供登录表单。
  4. 该模块提供了两个登录块选项:一个使用javascript在单击“登录”后立即在块内显示表单。另一个将用户带到单独的页面,但在登录后将用户返回到其原始页面。
  5. 使用两个电子邮件字段来自定义注册表单,以确保准确性。
  6. 使用“立即登录”功能时,可以选择将用户重定向到特定页面。
  7. 验证用户的电子邮件地址后,可以选择将用户重定向到特定页面。
  8. (可选)显示一条指示成功登录的用户消息。
  9. (可选)将登录表单和注册表单合并在一页上。
  10. (可选)以预先定义的时间间隔从系统清除未经验证的用户(请参阅install.txt的注意事项部分,以获取有关配置此功能的重要信息!)。
  11. 与规则模块集成,以在用户通过电子邮件验证过程进行验证时执行各种任务(有关示例,请参见 http://drupal.org/node/880904

设置配置表单具有称为拒绝访问时当前登录表单的选项(403),用于打开/关闭此确切功能。


LoginToboggan模块的工作原理很吸引人,它必须包含403页,但是非常感谢。
jelly46

10

选项1:使用CustomError模块

CustomError模块允许网站管理员创建HTTP自定义错误页的状态代码403(拒绝访问)和404(未找到),无需为他们每个人创建节点。有关其功能的更多详细信息(来自其项目页面):

  • 可配置的页面标题和描述。
  • 没有普通节点那样的作者和日期/时间标题。
  • 可以将任何HTML格式的文本放在页面正文中。
  • 错误页面是可修复的。
  • 未登录并尝试访问需要登录的区域的用户将被重定向到他们登录后尝试访问的页面。
  • 允许404自定义重定向。

您应该对以下部分感兴趣:“ 未登录并尝试访问需要登录的区域的用户将被重定向到他们登录后试图访问的页面。 ”。

选项2:使用“规则”模块重定向到用户/登录

“为“拒绝访问的页面”添加设置并在该页面上显示“用户登录”块”确实是一种可行的解决方案。但是,您可以采取进一步的措施,并增强AbitMORE的用户体验。通过使用关于“ 如何使用“规则”模块将匿名用户重定向到登录页面? ” 问题的答案中描述的方法的变体。

为此,假定“默认403”页面的路径设置为“ no_access”(通过/admin/config/system/site-information该管理页面底部附近的)。然后建立一个规则的规则模块,以作为事件类似“访问节点‘no_access’后”。这样整个规则看起来像这样:

  • 事件:访问节点“ no_access”后
  • 条件:

    1. 用户具有的角色 -Parameter: User: [site:current-user], Roles: anonymous user
    2. 非文字比较 -Parameter: Text: [site:current-page:url], Matching text: user/login
  • 操作: 页面重定向 -Parameter: URL: user/login

如果要这样做,您甚至可以添加另一个Action,以在Drupal消息区域中显示一些(信息性)消息,例如“您试图访问需要登录的页面...”。

是的,可能需要您启用额外的贡献模块(规则)。但是,正如它的日益流行所表明的那样,该模块可能已在几乎所有站点中启用(类似于Views模块),因为该模块有数十个用例。这个问题的1个变化:如何以类似的方式增强“找不到页面”的用户体验?

选项3:在专用页面上显示用户登录块

作为“动作”规则(重定向到user/login)的替代方法,另一种变体是创建一些指定的节点,例如使用“ my_login_page_with_login_block”之类的路径。然后将其与配置“用户登录”块(通过admin/structure/block)结合起来,如下所示:

  • 在您选择的任何主题区域中显示该块。
  • 使用该configure用户登录组右侧的“ ”链接,为“ Pages设置可见性设置 ”。即,将“ 在特定页面上显示块 ”的选项更改为“ 仅列出的页面 ”,然后在其下方的文本框中指定路径()。如果由于某种原因您不想使用路径,那么只需指定node / nid(nid =节点的ID)作为路径即可。my_login_page_with_login_block

嗨,皮埃尔,这是很大的帮助,我会尝试的,让您知道我的生活。谢谢
jelly46

1
谢谢您的反馈...希望您不会忘记有一天对它的反馈(尝试之后)。太糟糕了,没有“稍后提醒我”(回到上面)这样的事情,例如,使用诸如“ Rules Scheduler”和/或“ Flag”之类的东西来实现(就像我们在Drupal中所做的那样,对吗?)。 ..给我自己说明:在“ ArrayShift”发行版中添加此类功能...
Pierre.Vriens

好吧,它扩展了我的知识,但尚未回答问题,这是一个很大的帮助,但仍未达到应许的领域。
jelly46 2015年

LoginToboggan模块的运行就像一个魅力
jelly46

1
当然没问题,让我们将其视为Drupal的灵活性和选择权,以选择适合每个人的合适东西!
Pierre.Vriens

5

您可以在站点配置(admin / config / system / site-information)中为“默认403(拒绝访问)页面”添加设置。然后在此页面上显示“用户登录”块(admin / structure / block / manage / user / login / configure)。


3

如果没有LoginToboggan模块,则可以将用户登录块配置为在指定页面上可见,并且仅限匿名用户使用。在“用户登录”块的“可见性”设置中:

  1. 在“页面”选项卡中,将“在特定页面上显示块”设置为“仅列出的页面”,然后输入页面。

  2. 在“角色”标签中,为“显示特定角色的角色”设置选中“匿名用户”。


2

从理论上讲,您可以将“站点信息”下的“默认403(拒绝访问)”页面设置为用户/登录/ admin / config / system / site-information。

从未尝试过,但这只是一个主意?


1
馊主意。拒绝访问的登录用户最终陷入无尽的重定向循环,从而导致浏览器崩溃。
吉尔斯·B
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.