2017-10-09 17 views
0

我将为视频频道模型设置订阅系统。我用Vuejs和我的刀模板laravel 5.3Laravel没有定义只有来宾用户

,我把这个

<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 ::检查())

//你window.laravel这里

JS @ endif

+0

谢谢阿里,不幸的是它并没有解决问题。视频播放器安装了vuejs和videojs。它在访客模式下工作正常。但只有订阅组件给我这个错误。我不明白 –