Laravel — Как выйти и отобразить страницу выхода, когда пользователь вручную вводит неавторизованный 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'));
}

0

Решение

Я решил 🙂

Это моя функция ручки

  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('/');
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]