如何在Silverstripe中进行自定义更改密码重定向?

时间:2015-01-05 20:24:09

标签: php silverstripe

我有一个成功登录的网站重定向到会员页面:

_config.php
  Security::set_default_login_dest( '/join/' );

然而,当用户通过忘记密码/更改密码过程时,其行为如下:

  1. / join / - 用户从会员页面开始
  2. / Security / lostpassword - 用户点击"忘记密码"链路
  3. /Security/passwordsent/user%40example.com - 密码已发送给用户
  4. /安全/更改密码?m = 28& t = 8dfeb7655db ... - 用户点击电子邮件中的密码
  5. / Security / changepassword - 系统会提示用户更改密码
  6. /Security/login?BackURL=http%3A%2F%2Fwww.example.com%2F - 用户被重定向到登录页面
  7. 步骤6的预期行为是用户重定向到default_login_dest - / join /

    ChangePasswordForm.php具有以下代码来控制重定向的位置:

        if(isset($_REQUEST['BackURL'])) {
            $backURL = $_REQUEST['BackURL'];
        } else {
            $backURL = Session::get('BackURL');
        }
    

    但CMSMemberLoginForm.php有以下代码:

        if (Security::config()->default_login_dest) {
            return $this->controller->redirect(Director::absoluteBaseURL() . Security::config()->default_login_dest);
        }
    

    如何将ChangePasswordForm重定向到default_login_dest?

1 个答案:

答案 0 :(得分:0)

我没有对此进行测试,但您可以在电子邮件模板中添加&BackURL=...吗?

您可以创建电子邮件模板framework\templates\email\ForgotPasswordEmail.ss的本地副本,并将其更改为链接到:

<a href="$PasswordResetLink&BackURL=/join/">