我有一个 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 中指定其他任何内容?