如何在不使用Laravel中使用Session的情况下显示Flash消息以及重定向?

时间:2018-10-01 10:11:55

标签: laravel session

我有一部分代码可以检查用户上传的文件。如果我发现文件不是有效的png / jpg / jpeg文件,那么我将停用该用户并将其从站点注销,并删除其会话,然后将其重定向到登录页面。我想向他显示错误,他/她正在尝试上传无效的文件。如果不使用Session,就找不到如何显示的任何内容。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以在刷新会话后创建新的会话消息,这些消息将在显示后删除

控制器

$is_valid // boolean 

if(!is_valid) {
// if file is not valid, do something
 ...
// clear all session
session()->flush()
// redirect user to login page and send session message
return redirect()->route("login")
                 ->with("message","Your file is not valid")
                 ->with("message_type","danger");

login.blade

@if(session()->has("message"))
<div class="alert alert-{{session("message_type")}}">
  <p> {{session("message")}} </p>
</div>
@endif

答案 1 :(得分:1)

例如,如果您由于某种原因不想使用会话,这是一个简单的代码,可以在特定视图中显示错误消息,然后我们为用户提供一个链接以再次登录。

UploadController.php

public function myUpload(){

  //... some stuff and then logout the user, delete the session

  return view('uploadError', ['uploadError' => 'for some reason...']);
}

uploadError.blade.php

Error uploading the file: {{ $uploadError }}

<a href="/login">Login again</a>

在您的情况下,您不能使用错误会话系统,因为在删除错误会话系统时,此时用户没有会话,响应也没有会话。而且,如果您从控制器重定向到登录页面,则此登录请求将生成新会话,而不是之前的会话。