加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Yii2:是否可以从后端打开前端会话?

发布时间:2020-12-13 16:58:20 所属栏目:PHP教程 来源:网络整理
导读:我此刻与yii2斗争.以下场景: 我使用yii2高级模板,并有一个前端和一个后端,具有单独的用户表和登录. 现在我正在寻找一种后端用户可以从后端作为前端用户登录的方式.假设您在后端并查看前端用户,您可以单击“以此用户身份登录”. 这种情况可能吗? 我试图在后
我此刻与yii2斗争.以下场景:

我使用yii2高级模板,并有一个前端和一个后端,具有单独的用户表和登录.

现在我正在寻找一种后端用户可以从后端作为前端用户登录的方式.假设您在后端并查看前端用户,您可以单击“以此用户身份登录”.

这种情况可能吗?

我试图在后端的配置中配置前端使用:

'user' => [
         'identityClass' => 'backendmodelsBackendUser','enableAutoLogin' => false,],'frontendUser' => [
        'class' => 'yiiwebUser','identityClass' => 'commonmodelsUser',

在我的控制器中我尝试了这个:

if (Yii::$app->frontendUser->login($user_group->user,0)) {
    return $this->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/index','client' => $client->login_address]));
}

谢尔盖回答后编辑:

后端配置

'user' => [
            'identityClass' => 'backendmodelsBackendUser','enableAutoLogin' => true,'identityCookie' => [
                'name' => '_backendUser',// unique for backend
            ]
        ],

前端配置:

'user' => [
            'identityClass' => 'commonmodelsUser','loginUrl' => ['message/welcome'],// weil beim SessionTimeout darauf umgeleitet wird,'authTimeout' => 1800,'identityCookie' => [
                'name' => '_frontendUser',// unique for frontend
            ]
        ],

控制器功能:

public function actionLoginAs($id)
    {
        $user_group = UserGroup::findOne($id);
        if (is_null($user_group)) {
            return $this->redirect(['site/index']);
        }

        $group = $user_group->group;
        $client = $group->client;

        $yiiuser = new yiiwebUser([
                'identityClass' => 'commonmodelsUser','identityCookie' => [
                        'name' => '_frontendUser',// unique for frontend
                ]
        ]);
        $user = $user_group->user;

        if ($yiiuser->login($user,15 * 60)) {
            return $this->redirect(Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/index','client' => $client->login_address]));
        }

    }

解决方法

>你必须separete auth cookie名称:

前端

'user' => [
  'identityClass' => 'commonmodelsUser','identityCookie' => [
  'name' => '_frontendUser',// unique for frontend
  ]
],

后端

'user' => [
  'identityClass' => 'backendmodelsBackendUser','identityCookie' => [
  'name' => '_backendUser',// unique for backend
  ]
],

Actually separate front and backend users

>我认为你必须在后端创建方法,如admin / auth / loginUser

AuthController

public function actionLoginUser($login) {
    // check admin is loggin in
    $yiiuser = new yiiwebUser([
        'identityClass' => 'commonmodelsUser','identityCookie' => [
            'name' => '_frontendUser',// unique for frontend
        ]
    ]);
    $user = commonmodelsUser::findByUsername($login);
    // check user exists
    $yiiuser->login($user,false,15 * 60); // 15 min
    return $this->redirect('/');
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读