【发布时间】:2016-12-31 04:39:55
【问题描述】:
我正在解决一个很奇怪的问题:
我尝试登录用户,如果凭据不正确,我将消息闪入 Session 并将用户 bach 重定向到登录页面。显示消息,该消息已闪入会话。无论如何,在我重新加载页面后,会话中仍然有消息,但是它应该消失了。
你能帮我吗? 这是我的代码,我将消息闪入会话:
public static function verify($email, $password) {
$verified = Auth::user()->attempt([
'email' => $email,
'password' => $password
]);
if($verified) {
$user = Auth::user()->get();
Session::flash('message', [
'title' => trans('user.logged_in'.($user->sex != null ? '_'.$user->sex : '')),
'status' => 'success'
]);
return redirect(route('adminDashboard'));
}
else {
Session::flash('message', [
'title' => trans('user.bad_credentials'),
'status' => 'error'
]);
return redirect()->back();
}
return $verified;
}
这是页面代码,显示在地址上,我在不正确的凭据后重定向到该地址 (redirect()->back())
@if(Session::has('message'))
<?php
$message = Session::get('message');
$status = isset($message['status']) ? $message['status'] : 'success';
$messageString = '';
if(isset($message['title']) && $message['title'] != '')
$messageString = '"'.$message['title'].'"';
if(isset($message['text']) && $message['text'] != '')
$messageString .= ($messageString != '' ? ',' : '').'"'.$message['text'].'"';
?>
<script>
$(document).ready(function () {
Notify({!! $messageString !!}).{{ $status }}();
});
</script>
@endif
我对这种行为感到很困惑。在显示消息后,我还尝试在 View 中手动调用 Session::forget('message'),但如果我在此打印 Session::all() 之后立即从会话中消失,但在我重新加载后,消息再次出现在会话中。
非常感谢您的帮助。
【问题讨论】:
-
它仍然存在或在第二次请求时过期??
-
它仍然存在,如果重定向后仍然存在。无论如何,如果我手动将 url 更改为其他内容并转到那里,则闪烁消息消失。
-
也许当您刷新页面时,它仍然想使用相同的凭据登录?如果您的登录表单方法发布尝试刷新页面,请输入 url。
-
现在,它没有。当您尝试通过重新加载重新发送表单时,浏览器会向您显示有关此的通知。但我这样做:将表单发送到 url 以进行处理 - 例如:/process_login 我尝试验证用户,如果他插入了错误的凭据,设置 Session::flash 并且比做 redirect()->back() (到 url /login )。
标签: php flash session laravel-5