1

我有一个 SiteController 并创建了一个名为actionForgotpassword.

这个想法是制作一个恢复密码令牌,因此当用户在选择恢复密码后单击其电子邮件收件箱中的链接时,应用程序可以验证其真实性并允许/不允许更改他的密码。该链接类似于:

http://localhost/project/index.php?r=site/forgotpassword?token=3dd0e0(..)16712dac3 
*localhost for testing locally, not in production

我在站点控制器中有这些访问规则:

 public function accessRules()
        {
            return array(
              array('allow',
                'actions'=>array('recover', 'forgotpassword', 'login'),
                'users'=>array('?'),
              ),
              array('allow',
                'actions'=>array('index', 'logout'),
                'users'=>array('@'),
              ),
              array('deny',
                 'users'=>array('*'),
              )

            );
        }

我的问题是:

当我访问该页面时,localhost/project/index.php?r=site/forgotpassword一切正常,但是当我单击电子邮件链接并且 URL 如下所示:

localhost/project/index.php?r=site/forgotpassword?token=3dd0e0(..)16712dac3

我被重定向到项目索引(在本例中为站点/登录操作)。

为什么在 URL 中采用这种带有参数的行为?我是否需要在 accessRules 中指定其他任何内容?

4

1 回答 1

0

您的重置 URL 中有两个?。我假设您以某种方式手动创建了您的 URL。您应该使用createUrl()或者可能更好createAbsoluteUrl()

$url = Yii::app()->createAbsoluteUrl('site/forgotpassword', array(
    'token' => $token,
));
于 2013-05-08T06:05:15.550 回答