• Laravel5.1 搭建简单的社区(五)--用户登录


    定义一条登录的路由:

    // 用户登录
    Route::get('/user/login', 'UsersController@login');

    添加相应方法后返回视图:

        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', 'UsersController@signin');

    在控制器中声明方法:

        public function signin(RequestsUserLoginRequest $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

    这样 登陆进来后就可以看到用户名了。

  • 相关阅读:
    查询集 QuerySet
    JWT的认识和session的区别
    Django REST framework 简介
    Django自动获取项目中的全部URL
    flask数据库迁移
    类中方法的两种调用方式
    flask项目配置
    NOIP 模拟 $19; m u$
    NOIP 模拟 $18; m 老司机的狂欢$
    NOIP 模拟 $18; m 炼金术士的疑惑$
  • 原文地址:https://www.cnblogs.com/Alex-sk/p/6680323.html
Copyright © 2020-2023  润新知