【问题标题】:how to send error message to view when authorization failed in Lavavel如何在 Laravel 中授权失败时发送错误消息以查看
【发布时间】:2019-01-21 03:46:20
【问题描述】:

我正在开发一个用户可以加入群组的系统。如果满足这两个条件,用户可以发出ajax请求

  • 他必须登录
  • 他之前没有加入这个房间

我目前正在会话中保存错误消息。如果用户未登录,我想在视图中执行特定任务,否则如果用户已经加入组,我想在视图中执行特定任务。

这是我在控制器方法之前运行的身份验证代码

    public function authorize()
{

    //authorize that user must be logged in
   if(session()->get('uid')!=NULL){
      //authorize that user must not join this group before 
      $status=Usergroup::where(['user_id'=>session()->get('uid'), 
      'group_id'=>$this->chamber_id])->exists();

       if($status){
           session()->put('join_group_auth_error','already_joined');
           return false;
       }
       else{

           return true;
       }

       }
       else{
        session()->put('join_group_auth_error','not_login');
        return false;
       }
}

这是ajax请求

  function joinChamber(chamber_id){

    $.ajax({
        headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },

        url:'{{route('join.group')}}',
        type:'post',
        data:{group_id:group_id},
        success:function(response,status){
            if(response=='joined'){
             $("#joinbuttondiv-"+chamber_id).html('<span 
             class="bodybadge">Joined</span>');
             }},


        error:function(response){
        if(response.status==403){

        @if(session()->get('join_group_auth_error')=='not_login') 
            {{session()->forget('join_group_auth_error')}}
            openRegisterModal();

            @elseif(session()- 
            >get('join_group_auth_error')=='already_joined')
            {{session()->forget('join_group_auth_error')}}
            alert('You have already joined this group.');
            window.location=window.location.href;

            @endif

        }

    }
    });

这个系统可以正常工作,但不是每次都可以。 例如,我在视图中,我必须从中发出 ajax 请求,但我没有登录。当我点击加入按钮时,什么都没有发生,但是当我点击刷新页面后加入按钮它发生了我想要的。 这是什么原因。 还告诉我这是执行此操作的确切方法吗?

【问题讨论】:

  • Ajax 无法重新加载问题所在的页面
  • 无需重新加载页面。实际上,在刷新页面后,我再次单击加入按钮,然后它就可以正常工作了。
  • 你能告诉我控制台日志错误吗??
  • 这是一个状态为 403 的错误。POST localhost/webproject/public/thegroup/joingroup 403 (Forbidden)

标签: php ajax laravel laravel-5.2


【解决方案1】:

在浏览器中查看控制台并单击错误(红色)链接,它会显示服务器错误 - 发生了什么问题。

【讨论】:

  • 我想再次执行操作错误...仔细阅读问题
猜你喜欢
  • 2013-10-02
  • 2018-12-26
  • 1970-01-01
  • 2018-09-03
  • 2015-04-09
  • 2021-10-23
  • 2023-03-26
  • 2021-05-19
  • 1970-01-01
相关资源
最近更新 更多