1. 程式人生 > >Laravel5.5 搭建簡單的社群(五)--使用者登入

Laravel5.5 搭建簡單的社群(五)--使用者登入

定義一條登入的路由:

// 使用者登入
Route::get('/user/login', '[email protected]');

新增相應方法後返回檢視:

    public function login()
    {
        return view('user.login');
    }

建立login檢視:

複製程式碼
@extends('app')

@section('content')
    <div class="container">
        <div class="row">
            <div class
="col-md-6 col-md-offset-3" role="main"> {!! Form::open(['method'=>'POST','url'=>'/user/login']) !!} <!--- Email Field ---> <div class="form-group"> {!! Form::label('email', 'Email:') !!} {!! Form::email('email', null, ['class' => 'form-control']) !!}
</div> <!--- Password Field ---> <div class="form-group"> {!! Form::label('password', 'Password:') !!} {!! Form::password('password', ['class' => 'form-control']) !!} </div> <!--
提交 --> {!! Form::submit('登入',['class' => 'btn btn-primary form-control']) !!} <div> @if($errors->any()) <ul class="list-group"> @foreach($errors->all() as $error) <li class="list-group-item list-group-item-danger">{{ $error }}</li> @endforeach </ul> @endif </div> {!! Form::close() !!} </div> </div> </div> @stop
複製程式碼

到此我們還需要建立一個Request:

php artisan make:request UserLoginRequest 

設定規則

複製程式碼
class UserLoginRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'email' => 'required|email',
            'password' => 'required|min:6',
        ];
    }
}
複製程式碼

註冊登入驗證路由:

// 使用者登入驗證
Route::post('/user/login', '[email protected]');

在控制器中宣告方法:

複製程式碼
    public function signin(Requests\UserLoginRequest $request)
    {
        // 直接使用門面進行認證
        if (\Auth::attempt([
            'email' => $request->get('email'),
            'password' => $request->get('password'),
        ])){
            // 認證成功 跳轉到首頁
            return redirect('/');
        }
        // 如果認證失敗的話 使用session來提示錯誤
        \Session::flash('user_login_failed', '賬號或密碼錯誤');
        return redirect('/user/login')->withInput();
    }
複製程式碼

HTML中對應的session用法:

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

在導航欄展示使用者名稱,進入app.blade.php 增加判斷語句:

複製程式碼
                <ul class="nav navbar-nav navbar-right">
                    @if(\Auth::check())
                        <li><a href="../navbar-static-top/">{{ \Auth::user()->name }}</a></li>
                    @else
                        <li><a href="/user/login">登 錄</a></li>
                        <li><a href="/user/register">注 冊</a></li>
                    @endif
複製程式碼

這樣 登陸進來後就可以看到使用者名稱了。