【发布时间】:2016-09-30 18:27:34
【问题描述】:
我在 Yii2 应用程序中设置了简单的基于角色的访问权限,如下所示:
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'ruleConfig' => [
'class' => AccessRule::className(),
],
'only' => ['logout', 'contact', 'change-password'],
'rules' => [
[
'actions' => ['login'],
'allow' => true,
'roles' => ['?'],
],
[
'actions' => ['logout', 'contact', 'change-password'],
'allow' => true,
'roles' => [
User::ROLE_USER,
User::ROLE_ADMIN
],
],
[
'actions' => ['logout', 'change-password'],
'allow' => true,
'roles' => [
User::ROLE_NEW_USER
],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}
当用户未登录时,尝试访问注销、联系或更改密码页面将重定向到登录页面。我还想对此进行配置,以便具有角色 ROLE_NEW_USER 的用户始终被重定向到更改密码页面,直到他们的状态更改(更改密码时状态在数据库中更新)。
是否可以使用denyCallback来做到这一点,或者有没有办法使用重定向到登录页面来重定向到其他页面?
【问题讨论】: