因为Http是无状态的,我们可以利用session让使用者表明自己的身份。
首先我们必须先建立一个session的table
php artisan session:table
php artisan migrate
这时在我们的资料库里面,会出现一个session的表格
这时我们来看看能不能再登入後保持session,所以我们在loginController中,登入後存session
public function loginWithORM(Request $request){
$account = $request->input('account');
$password = $request->input('password');
$user = User::query()
->where('account', $account)
->first();
if(Hash::check($password, $user->password)){
session(['user' => $user]);
return "你好,我的帐号是".$user->account;
}
return Redirect::back()->withErrors(['帐号或密码错误']);
}
我们这时候在写一个nav.blade.php去确认我们的session状态如何,并让welcome.blade.php include
@if(!Session::has('user'))
<div style="float:right;">
<a href="login">登入</a>
</div>
@endif
@if(Session::has('user'))
<div style="float:right;">
<span>你好,{{ Session::get('user.name') }}</span>
<a href="logout">登出</a>
</div>
@endif
同时,我们把welcome.blade.php改写成我们的首页
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
</head>
<body>
@include('nav')
<h1>我是首页</h1>
</body>
</html>
controller在登入成功後,我们让他导入首页
public function loginWithORM(Request $request){
$account = $request->input('account');
$password = $request->input('password');
$user = User::query()
->where('account', $account)
->first();
if(Hash::check($password, $user->password)){
session(['user' => $user]);
return view('welcome');
}
return Redirect::back()->withErrors(['帐号或密码错误']);
}
好的!登入测试看看,首先我们进入首页,会看到这个画面
按下登入後,导到登入画面,我们打完正确的帐密後,按下登入,画面回到首页长这样
成功取得session的值,这时候不管重整画面还是关掉重开,session都会保持住,但我们在登出时,会希望他的session被拿掉,所以我们要做一个登出的controller,记得要加上route唷!
class LogoutController extends Controller{
public function __invoke(Request $request)
{
$request->session()->flush();
return view('welcome');
}
}
试试登出吧,这时登出session就被消除了!我们今天完成了session保持状态,明天见罗~
<<: Day 26 - HBuilderX 与 Native.js API 读取图片
>>: # Day11--枚举:让你「有秩序」的管理「有顺序」的项目
【前言】 本系列为个人前端学习之路的学习笔记,在过往的学习过程中累积了很多笔记,如今想藉着IT邦帮忙...
在实际开发中,一定会需要将资料持久化,常见的持久化技术有Spring 自带的JdbcTemplate...
Colab连结 图片标准化 Image Normalization 不做可以吗?小实验实测差别 一般...
作业系统L3-行程 行程(Process)–正在执行的程序 行程(Process) VS 程序(Pr...
ASG 是用来: scale out (增加 EC2 个体) 以符合增加的工作量 scale in...