You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10向Vue3 Composition API传递登录用户名问题求助

问题原因

你拿到的loggedUser是JSON格式的字符串,不是JavaScript对象,所以没法直接用.语法提取用户名。Laravel中直接输出Auth::user()时,框架会自动把对象序列化为JSON字符串,传到前端后还是字符串类型,必须先转成JS对象才能访问属性。

两种解决方法

方法一:Laravel端直接传递用户名(推荐)

如果只需要用户名,没必要传整个用户对象,直接在meta标签里输出用户名即可:

<!-- app.blade.php -->
<meta name="user-name" content="{{ Auth::user()->name }}">

然后在Vue里直接获取使用:

<!-- index.vue -->
{{ loggedUserName }}

<script setup>
import useCompanies from "@/composables/companies";
import { onMounted } from "vue";

const loggedUserName = document.querySelector("meta[name='user-name']").getAttribute('content')
</script>

方法二:Vue端解析JSON字符串获取用户名

如果需要保留完整用户信息,就把拿到的JSON字符串解析成JS对象:

<!-- index.vue -->
{{ loggedUser.name }}

<script setup>
import useCompanies from "@/composables/companies";
import { onMounted, ref } from "vue";

// 用响应式变量存储用户信息
const loggedUser = ref({});

onMounted(() => {
  const userStr = document.querySelector("meta[name='user']").getAttribute('content');
  // 处理用户未登录的情况,避免JSON.parse报错
  if (userStr) {
    loggedUser.value = JSON.parse(userStr);
  }
})
</script>

注意要加判断:如果用户未登录,Auth::user()会返回null,这时meta标签的content为空,直接解析会报错,所以要先检查字符串是否存在。

内容的提问来源于stack exchange,提问作者user22350468

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:13:14