(已解决)CMS更新用户信息失败

1. 运行环境

lnmp

1). 当前使用的 Laravel 版本?

laravel 8

2). 当前使用的 php/php-fpm 版本?

PHP 版本:7.4

3). 当前系统

Ubuntu 20.4

4). 业务环境

开发环境

2. 问题描述?

客户端代码:

  public function casLogin(Request $request)
    {
        $cas = app('cas');
        $url = env('CAS_LOGIN_URL');
        try {
            if ($cas->checkAuthentication()) {
                $cas_user = $cas->getAttributes();
                $uid = $cas_user['uid'];
                $url = '登录逻辑';
            }
            return redirect()->to($url);
        } catch (\Exception $e) {
            Log::debug($e->getMessage());
            return redirect()->to(env('CAS_SYSTEM_LOGIN'));
        }
    }

当前问题是$cas->getAttributes() 获取不到最新用户的信息,A用户登录,跳转到业务系统获取到A用户信息,当服务端切换B用户登录,在客户端$cas->getAttributes() 获取到的还是A用户的信息,$cas->renewAuthentication() 也试过了,依然解决不了问题

3. 您期望得到的结果?

能够同步用户信息

码上有钱
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

2个问题

  1. 不应该从 env() 方法中取配置,应该把 env 的直放到 config 文件中,具体原因自己去搜
  2. 目测前后端交互是 Session 机制,建议你这里改成 SSO 共享 Session ,即通过 url 地址判断应该返回用户的哪个信息,一次登录可以多个系统通行。如果不想做 SSO,就需要在 app/config/session.php 中做 Session 隔离

当然还有个更简单的方法:让前端登录 A 地址后,用浏览器「无痕模式」登录 B。

2年前 评论
Mr_Choi (楼主) 2年前
讨论数量: 3

2个问题

  1. 不应该从 env() 方法中取配置,应该把 env 的直放到 config 文件中,具体原因自己去搜
  2. 目测前后端交互是 Session 机制,建议你这里改成 SSO 共享 Session ,即通过 url 地址判断应该返回用户的哪个信息,一次登录可以多个系统通行。如果不想做 SSO,就需要在 app/config/session.php 中做 Session 隔离

当然还有个更简单的方法:让前端登录 A 地址后,用浏览器「无痕模式」登录 B。

2年前 评论
Mr_Choi (楼主) 2年前

env 会读生成缓存, dev模式是最新。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!