我在yii2中使用了很多这样的模块。
yii_basic
-- modules
-- admin
-- it
-- members 我有一个场景,这是用户(成员)需要通过电子邮件,通过应用程序发送的批准标志。
例如,这是链接:dzil.local/it/request/update?id=940,该链接实际上是一个具有ID的更新控制器。
我需要用户强制登录时,它被访问。但我的问题是,登录成功后,它不是重定向到控制器,我的意思是:dzil.local/it/request/update?id=940,而是模块的actionIndex。
这是类RequestController:
class RequestController extends Controller {
public function behaviors() {
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['post'],
'bulk-delete' => ['post'],
],
],
'access' => [
'class' => \yii\filters\AccessControl::className(),
'rules' => [
[
'actions' => ['create', 'update', 'delete', 'get-item-detail', 'error'],
'allow' => true,
],
[
'actions' => ['logout', 'index'], // add all actions to take guest to login page
'allow' => true,
'roles' => ['@'],
],
],
],
];
}我认为失败的原因是:
public function actionLogin()
{
if (!Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
if (Yii::$app->user->can('Administrator')) {
return $this->redirect(['/admin']);
} else if (Yii::$app->user->can('IT')) { // the user is on IT
return $this->redirect(['/it']);
} else { //defaultnya user common
return $this->redirect(['/members']); // the user is member
}
}
return $this->render('login', [
'model' => $model,
]);
}请给我一个最佳实践的建议。
发布于 2017-03-19 18:25:02
如果您需要在登录后返回路由,则应在需要的位置添加return $this->goBack();,例如:
if ($model->load(Yii::$app->getRequest()->post()) && $model->login()) {
return $this->goBack();
}https://stackoverflow.com/questions/42884074
复制相似问题