6

問題は次のとおりです。

ログイン後にユーザーをランディング ページにリダイレクトするルールがあります。それは正常に動作します。

ただし、ユーザーがパスワードを忘れた場合は、ワンタイム ログイン ページへのリンクが送信されます。ボタンをクリックすると、(私のルールにより) ランディング ページに送られます。

もちろん問題は、(ユーザー プロファイルでの) 通常のパスワード変更では、パスワードを変更するために自分のパスワードを知っている必要があるため、パスワードを変更できないことです。

では、リダイレクト ルールを次のように変更するにはどうすればよいでしょうか。

「ログイン ユーザーがワンタイム ログイン画面から来ている場合を除き、ランディング ページにリダイレクトします」または「ターゲット URL が /user/reset/* で始まる場合を除き、ランディング ページにリダイレクトします (ワイルドカードを使用できますか??)」 "

ヒントを事前にありがとう

4

5 に答える 5

4

ここで別の回答で概説されているように、ルールを使用してこの問題を修正しましたが、機能するように変更する必要があり、テキスト比較条件を負に設定し、ページリダイレクトを強制リダイレクトに設定する必要があり、必要なページは '入門'。完璧に動作します

だから私が追加したルール: EVENTS ユーザーがログインしました

条件 NOT テキスト比較パラメータ: テキスト: [site:current-page:path]、一致するテキスト: user、比較操作: で始まる

ACTIONS ページのリダイレクト パラメータ: 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 に答える
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 に答える