Laravel-当用户手动输入未经授权的URL时,如何注销并显示注销页面


Laravel - How to logout and display logout page when user manually enter unauthorized URL

我是laravel的初学者。我正在为多个用户使用角色和权限概念。如果用户手动输入该用户不允许的URL,那么我想注销该用户。

我已经成功注销了用户,但在内容区部分显示注销页面,而不是登录的单个页面。

请帮帮我。

提前感谢。。。。

图像快照在此处输入图像描述

这是我的ACL代码-

public function handle($request, Closure $next, $permission = null)
    {
        if ($request->getSession()->has('user')) {
            $userObj = new 'App'User;
            if ($userObj->canAccess($request->getSession()->get('user')[0]['userPerm'], $permission)) {
                return $next($request);
            }
            else{ 
                  redirect('logout')->withErrors(array('mst_error' => 'Unauthorized Access!'))->send();exit;
            }
        }
        return $request->isXmlHttpRequest() ? 
            response(json_encode(array('session_logout' => true)), 401) : 
            redirect('login')->withErrors(array('mst_error' => 'You don''t have any active session. Please login again'));
    }

我已经解决了:)

这是我的手柄功能

  public function handle($request, Closure $next, $permission = null)
    {
        if ($request->getSession()->has('user')) {
            $userObj = new 'App'User;
            if ($userObj->canAccess($request->getSession()->get('user')[0]['userPerm'], $permission)) {
                return $next($request);
            }
            else{
                    return response()->json(array('mst_error'=>'Unauthorized Access.'),401);
                }
        }
        return $request->isXmlHttpRequest() ? 
            response(json_encode(array('session_logout' => true)), 401) : 
            redirect('login')->withErrors(array('mst_error' => 'You don''t have any active session. Please login again'));
    }

这是我的Ajax请求-

$.ajax({
            url:url,
            data:data,
            statusCode: {
                401: function(res){
                        location.href = "unauthorized";
                    }
            }
        }).done(function(result){console.log(result);
            $('#section-content').html(result);
        });

这是我在Auth Controller 中未经授权的功能

protected function unauthorized_logout (Request $request) {
        if ($request->getSession()->has('user')) {
            $request->getSession()->flush();
        }        
        Session::flash('error','Unauthorized Access!');
        return redirect('/');
    }