6

问题如下:

我有一条规则,可在登录后将用户重定向到登录页面。它工作正常。

但是,如果用户忘记了密码,则会向他们发送一个指向一次性登录页面的链接。他们单击按钮并(由于我的规则)被发送到他们的登录页面。

问题当然是他们无法更改密码,因为正常的密码更改(在用户配置文件中)需要您知道密码才能更改。

那么我将如何修改我的重定向规则说:

“重定向到登录页面,除非登录用户来自一次性登录屏幕”或“重定向到登录页面,除非目标 URL 以 /user/reset/* 开头(你可以通配符吗??) "

提前感谢您的任何提示

4

5 回答 5

4

我只是使用规则解决了这个问题,如另一个答案中所述,但我必须修改它才能工作,我必须将文本比较条件设置为负数,并将页面重定向到强制重定向,我想要的页面被称为'入门'。完美运行

所以我添加了规则: 事件 用户已登录

CONDITIONS NOT 文本比较参数:文本:[site:current-page:path],匹配文本:用户,比较操作:以

操作 页面重定向参数: URL:入门

于 2013-11-01T17:06:24.270 回答
4

你可以用这样的规则来做到这一点:

{ "rules_after_login_redirect_to_news" : {
    "LABEL" : "After login redirect to news.",
    "PLUGIN" : "reaction rule",
    "WEIGHT" : "0",
    "REQUIRES" : [ "rules" ],
    "ON" : [ "user_login" ],
    "IF" : [
      { "NOT text_matches" : {
          "text" : [ "site:current-page:path" ],
          "match" : "^user\/reset\/",
          "operation" : "regex"
        }
      }
    ],
    "DO" : [ { "redirect" : { "url" : "news" } } ]
  }
}
于 2013-04-23T13:28:29.307 回答
2

在我目前正在进行的项目中,我遇到了同样的问题。我们通过使用 Context 模块(http://drupal.org/project/context)解决了这个问题。

安装并启用 Context 模块。使用以下条件创建上下文:path = ~user/reset/*(将反应留空)

将此上下文用作登录重定向规则中的条件(上下文规则 / 是上下文集)

于 2013-05-24T10:27:13.597 回答
1

您也可以仅使用模块规则来解决此问题,无需编码。

就我而言,我想在人们登录后将他们重定向到他们的工作台。但是忘记密码的人也会被重定向到他们的工作台,并且无法更改他们的密码。他们必须导航到自己的个人资料页面,但必须再次重新输入密码:一次性记录不再起作用。

所以这是我添加的规则:

事件 事件:用户登录。

条件 要素:文本比较。参数:Tekst:[site:current-page:path],匹配文本:user,比较操作:结尾

操作 元素:页面重定向参数:URL:admin/workbench,强制重定向:false

于 2013-09-25T14:24:38.837 回答
0

Drupal 6 中有一个 Path Rules 模块和 Rules Bonus Pack 模块可以很好地做到这一点。但不幸的是,Drupal 7 似乎没有这个功能/模块。请参阅http://drupal.org/node/1506298http ://drupal.org/node/1045964#comment-6016904

但是,您仍然可以使用 PHP 条件来检查路径。试试这个(添加一个新条件并使用 php 添加它。您需要启用 php 模块)。在登录后重定向用户的规则中,

<?php
if (arg(0) == 'user' && arg(1) == 'reset'){
  return FALSE;
}
else{
  return TRUE;
}
?>

如果路径为 user/reset/*,这将阻止规则继续执行。此外,您可能需要在另一个重定向密码更改用户的规则中交换 TRUE False 的相同条件。

于 2012-06-10T11:55:28.377 回答