首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AccessControl :需要登录才能在yii2中打开控制器:

AccessControl :需要登录才能在yii2中打开控制器:
EN

Stack Overflow用户
提问于 2017-03-19 15:34:02
回答 1查看 287关注 0票数 0

我在yii2中使用了很多这样的模块。

代码语言:javascript
复制
yii_basic
   -- modules
         -- admin
         -- it
         -- members 

我有一个场景,这是用户(成员)需要通过电子邮件,通过应用程序发送的批准标志。

例如,这是链接:dzil.local/it/request/update?id=940,该链接实际上是一个具有ID的更新控制器。

我需要用户强制登录时,它被访问。但我的问题是,登录成功后,它不是重定向到控制器,我的意思是:dzil.local/it/request/update?id=940,而是模块的actionIndex。

这是类RequestController:

代码语言:javascript
复制
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' => ['@'],
      ],
    ],
  ],

];
}

我认为失败的原因是:

代码语言:javascript
复制
  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,
    ]);
}

请给我一个最佳实践的建议。

EN

回答 1

Stack Overflow用户

发布于 2017-03-19 18:25:02

如果您需要在登录后返回路由,则应在需要的位置添加return $this->goBack();,例如:

代码语言:javascript
复制
if ($model->load(Yii::$app->getRequest()->post()) && $model->login()) {
    return $this->goBack();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42884074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档