首页 > 解决方案 > 未经身份验证尝试访问后发送消息

问题描述

如果非身份验证用户尝试访问身份验证 URL,我正在尝试发送消息

protected function unauthenticated($request, AuthenticationException $exception)
  {
    return $request->expectsJson()
            ? response()->json(['message' => $exception->getMessage()], 401)
           : redirect()->guest('/');
  }

它重定向到/登录,但我如何在/页面中显示消息?

标签: phplaravel

解决方案


使用会话。

在您的控制器中-

use Session;

protected function unauthenticated($request, AuthenticationException $exception)
  {
    Session::put('error_message','Please login to continue.');
    return $request->expectsJson()
            ? response()->json(['message' => $exception->getMessage()], 401)
           : redirect()->guest('/');
  }

在您的刀片文件中-

@if(Session::has('error_message'))
<div class="alert alert-danger">{{ Session::get('error_message') }}</div>

  @php
    Session::forget('error_message');
  @endphp

@endif

更新

仅当要进行重定向时才创建会话密钥。如果只需要 JSON,那么我们需要跳过会话部分。

protected function unauthenticated($request, AuthenticationException $exception)
  {
    if($request->expectsJson()){
       return response()->json(['message' => $exception->getMessage()], 401);
    }
    Session::put('error_message','Please login to continue.');
    return redirect()->guest('/');
  }

推荐阅读