Day12 跟着官方文件学习Laravel-Session

因为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--枚举:让你「有秩序」的管理「有顺序」的项目

【JavaScript】用debugger进行除错

【前言】 本系列为个人前端学习之路的学习笔记,在过往的学习过程中累积了很多笔记,如今想藉着IT邦帮忙...

Day 11 - Spring Boot & JdbcTemplate

在实际开发中,一定会需要将资料持久化,常见的持久化技术有Spring 自带的JdbcTemplate...

【14】如果不做图片标准化(Normalization)会怎麽样

Colab连结 图片标准化 Image Normalization 不做可以吗?小实验实测差别 一般...

作业系统L3-行程

作业系统L3-行程 行程(Process)–正在执行的程序 行程(Process) VS 程序(Pr...

[DAY 09] ASG (Auto Scaling Group)

ASG 是用来: scale out (增加 EC2 个体) 以符合增加的工作量 scale in...