(已解决)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. 您期望得到的结果?#

能够同步用户信息

码上有钱
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

2 个问题

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

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

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

2 个问题

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

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

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

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

1年前 评论