如何在银条中进行自定义更改密码重定向


How to make custom Change Password redirect in Silverstripe?

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

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

但是,当用户经历忘记密码/更改密码过程时,它的行为如下:

  1. /join/ - 用户从成员资格页面开始
  2. /
  3. 安全/丢失密码 - 用户点击"忘记密码"链接
  4. /
  5. Security/passwordsent/user%40示例.com - 将密码发送给用户
  6. /
  7. Security/changepassword?m=28&t=8dfeb7655db... - 用户单击电子邮件中的密码
  8. /
  9. 安全性/更改密码 - 提示用户更改密码
  10. /
  11. 安全/登录?BackURL=http%3A%2F%2Fwww.example.com%2F - 用户被重定向到登录页面

步骤 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);
    }

如何使更改密码表单重定向到default_login_dest?

我还没有测试过这个,但你能在电子邮件模板中添加一个&BackURL=...吗?

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

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