Laravel 未仅与访客用户一起定义
Posted
技术标签:
【中文标题】Laravel 未仅与访客用户一起定义【英文标题】:Laravel is not defined Only with Guest User 【发布时间】:2018-03-20 12:31:54 【问题描述】:我将为视频频道模型设置订阅系统。我使用 Vuejs 和 laravel 5.3
在我的刀片模板中,我放了这个
<script>
window.Laravel = <?php echo json_encode([
'csrfToken' => csrf_token(),
]); ?>
<script>
在身份验证模式下一切正常(当用户登录时),但在访客模式下,我的 vuejs 组件不起作用,我在控制台中得到了这个
ReferenceError: Laravel is not defined
截图 https://image.ibb.co/bPJCWG/laravel_Vuejs_Error_Guest.jpg 订阅人数消失,没有任何效果
这是我的代码:
控制器:
public function show(Request $request, Channel $channel)
$response = [
'count' => $channel->subscriptionCount(),
'user_subscribed' => false,
'can_subscribe' => false,
];
if($request->user())
$response = array_merge($response, [
'user_subscribed' => $request->user()->isSubscribedTo($channel),
'can_subscribe' => !$request->user()->ownsChannel($channel),
]);
return response()->json([
'data' => $response
], 200);
SubscribeButton.vue 组件:
<script>
export default
data ()
return
//...
,
props:
//...
,
methods:
getSubscriptionStatus ()
this.$http.get('/subscription/' + this.channelSlug).then((response) =>
this.subscribers = response.body.data.count;
this.userSubscribed = response.body.data.user_subscribed;
this.canSubscribe = response.body.data.can_subscribe;
)
,
mounted ()
this.getSubscriptionStatus();
请帮忙!
【问题讨论】:
【参考方案1】:这是因为csrf
仅适用于经过身份验证的用户。您需要更改 javascript 部分以考虑匿名用户,例如:
@if (Auth::check())
//你的window.laravel js在这里
@endif
【讨论】:
感谢阿里,不幸的是它并没有解决问题。视频播放器是使用 vuejs 和 videojs 设置的。它在访客模式下工作正常。但只有订阅组件给我这个错误。我不明白以上是关于Laravel 未仅与访客用户一起定义的主要内容,如果未能解决你的问题,请参考以下文章
Laravel,访客和用户的公共页面,会话表 user_id null
将 Laravel Blade 模板与 Vue JS 和事件监听器一起使用