2019-04-24 12:09:44 1721次浏览 5条回答 0 悬赏 10 金钱

各位大佬,我现在有一个场景:

我在一个 app 里面有多个系统。比如现在有一个商城系统,他有单独的用户系统,可以单独使用,Yii::$app->user 去获取用户信息。现在我想改下。在新建一个用户表,去实现 【用我 app 的用户不一定是商城的用户】的功能,在 app 用户使用商城有关的功能时,如果商城用户表里面没有该用户我就新建一个。

现在我的问题是:怎么在不大动商城系统的情况下实现?有什么有好的思路吗?

我试过的方案:

  1. 新建一个登录组件【gos】,我获取我新登录信息,用 Yii::$app->gos 去获取。在使用商城功能是我模拟商城原先的登录,设想商城还是用原先的【user】组件,该怎样就怎样。结果:不行。gos 可以正常使用,但是 user 没数据
  2. 把商城的【user】组件改为普通组件去使用。结果不行,user 是 yii 的预组件

最佳答案

  • qingchen 发布于 2019-04-25 09:20 举报

    两种同时用,防止互串,idParam,authTimeoutParam,absoluteAuthTimeoutParam,returnUrlParam 这几个都要配置下
    `
    'user' => [

      'identityClass' => 'common\models\Member',
      'enableAutoLogin' => true,
      'loginUrl' => '/member/public/login',
      'identityCookie' => ['name' => '_identity-frontend', 'httpOnly' => true],
      'on afterLogin' => function($event) {
          $user = $event->identity; //这里的就是User Model的实例
          $user->last_login_at = time();
          $user->login_ip = \Yii::$app->request->getUserIP();
          $user->login_num += 1;
          $user->save();
      },
    ],
    'saler' => [
      'class' => 'yii\web\User',
      'identityClass' => 'common\models\StoreUser',
      'enableAutoLogin' => true,
      'loginUrl' => '/saler/public/login',
      'idParam' => '__storeuser_id',
      'authTimeoutParam' => '__storeuser_expire',
      'absoluteAuthTimeoutParam' => '__storeuser_absoluteExpire',
      'returnUrlParam' => '__storeuser_returnUrl',
      'identityCookie' => ['name' => '_identity-storeadmin', 'httpOnly' => true],
      'on afterLogin' => function($event) {
          $user = $event->identity; //这里的就是User Model的实例
          $user->last_login_at = time();
          $user->last_login_ip = \Yii::$app->request->getUserIP();
          $user->login_num += 1;
          $user->save();
      },`
    
  • 回答于 2019-04-24 16:32 举报

    原谅我没怎么看懂

  • 回答于 2019-04-24 16:53 举报

    你描述清楚点

  • 回答于 2019-04-24 17:57 举报

    读了好多遍,最后蒙了!!!真的没懂说的是什么意思。

  • 回答于 2019-04-24 23:48 举报

    根据你蹩脚的描述,可能两个系统都是使用的yii,并且在同一个域里,而且属于同一个项目,否则两个Yii::$app是没有联系的。如果你的两个子系统属于同一个app,你可以直接访问商城系统的用户信息。如果你是想在app子系统扩展用户信息,或改编用户行为,yii支持使用行为的方式动态地为对象增加功能。

您需要登录后才可以回答。登录 | 立即注册
sinxcosy
助理

sinxcosy 阿德拉尔

注册时间:2019-01-07
最后登录:2023-02-23
在线时长:7小时45分
  • 粉丝0
  • 金钱30
  • 威望0
  • 积分100

热门问题