Laravel5.1 框架登录和注册实现方法详解

吾爱主题 阅读:101 2021-09-27 10:58:00 评论:0

本文实例讲述了Laravel5.1 框架登录和注册实现方法。分享给大家供大家参考,具体如下:

关于登录和注册 Laravel自带了一套组件实现了这一功能,我们只需要实现简单的视图即可。

AuthController是专门管理用户注册和登录的。

PassWordController是重置密码用的,今天暂不做记录。

1 配置

我们可以在 config/auth.php 文件中进行用户认证的配置:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 <?php return [    /*    |--------------------------------------------------------------------------    | Default Authentication Driver    |--------------------------------------------------------------------------    |    | This option controls the authentication driver that will be utilized.    | This driver manages the retrieval and authentication of the users    | attempting to get access to protected areas of your application.    |    | Supported: "database", "eloquent"    |    */    'driver' => 'eloquent' ,    /*    |--------------------------------------------------------------------------    | Authentication Model    |--------------------------------------------------------------------------    |    | When using the "Eloquent" authentication driver, we need to know which    | Eloquent model should be used to retrieve your users. Of course, it    | is often just the "User" model but you may use whatever you like.    |    */    'model' => App\User:: class ,    /*    |--------------------------------------------------------------------------    | Authentication Table    |--------------------------------------------------------------------------    |    | When using the "Database" authentication driver, we need to know which    | table should be used to retrieve your users. We have chosen a basic    | default value but you may easily change it to any table you like.    |    */    'table' => 'users' ,    /*    |--------------------------------------------------------------------------    | Password Reset Settings    |--------------------------------------------------------------------------    |    | Here you may set the options for resetting passwords including the view    | that is your password reset e-mail. You can also set the name of the    | table that maintains all of the reset tokens for your application.    |    | The expire time is the number of minutes that the reset token should be    | considered valid. This security feature keeps tokens short-lived so    | they have less time to be guessed. You may change this as needed.    |    */    'password' => [      'email' => 'emails.password' ,      'table' => 'password_resets' ,      'expire' => 60,    ], ];

这是默认的配置,注释写的很清楚了 如果有特别需要可以做更改,一般情况中我们使用默认的就OK。

2 创建路由

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /**   * 用户认证   */ // getLogin 用于展示登录表单。 Route::get( '/auth/login' , 'Auth\AuthController@getLogin' ); // postLogin 用于提交用户登录数据。 Route::post( '/auth/login' , 'Auth\AuthController@postLogin' ); // getLogout 用于退出登录。 Route::get( '/auth/logout' , 'Auth\AuthController@getLogout' ); /**   * 用户注册   */ // getRegister 用于展示注册表单。 Route::get( '/auth/register' , 'Auth\AuthController@getRegister' ); // postRegister 用于提交用户注册数据。 Route::post( '/auth/register' , 'Auth\AuthController@postRegister' );

3 注册实现

3.1 编写视图

注册视图的路径必须放在 views/auth/ 目录中 并命名为 register.blade.php。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 <!DOCTYPE html> <html> <head>    <meta charset= "utf-8" >    <title>用户注册</title>    <link rel= "stylesheet" href= "//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel= "external nofollow" rel= "external nofollow" > </head> <body> <div class = "container" >    <div class = "row" >      <div class = "col-md-8 col-md-offset-2" >        <div class = "panel panel-default" >          <div class = "panel-heading" >Register</div>          <div class = "panel-body" >            <form action= "{{ url('/auth/register') }}" method= "post" role= "form" class = "form-horizontal" >              <input type= "hidden" name= "_token" value= "{{ csrf_token() }}" >              <div class = "form-group" >                <label class = "col-md-4 control-label" >用户名:</label>                <div class = "col-md-6" >                  <input type= "text" name= "name" class = "form-control" autofocus>                </div>              </div>              <div class = "form-group" >                <label class = "col-md-4 control-label" >邮箱:</label>                <div class = "col-md-6" >                  <input type= "email" name= "email" class = "form-control" >                </div>              </div>              <div class = "form-group" >                <label class = "col-md-4 control-label" >密码:</label>                <div class = "col-md-6" >                  <input type= "password" name= "password" class = "form-control" >                </div>              </div>              <div class = "form-group" >                <label class = "col-md-4 control-label" >确认密码:</label>                <div class = "col-md-6" >                  <input type= "password" name= "password_confirmation" class = "form-control" >                </div>              </div>              <div class = "form-group" >                <div class = "col-md-offset-4 col-md-8" >                  <button type= "submit" class = "btn btn-primary" >注册</button>                </div>              </div>            </form>          </div>        </div>      </div>    </div> </div> </body> </html>

3.2 修改跳转URL

注册后跳转的URL有时候不是我们想要的,你可以自定义跳转路由,在AuthController中添加即可:

?
1 protected $redirectPath = '/' ;

4 登录实现

我们注册后已经有了用户了 现在可以试试登录的实现了。

4.1 编写视图

登录的视图路径也是有规定的:views/auth/ 然后命名为:login.balde.php

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 <!DOCTYPE html> <html> <head>    <meta charset= "utf-8" >    <title>用户登录</title>    <link rel= "stylesheet" href= "//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel= "external nofollow" rel= "external nofollow" > </head> <body> <div class = "container" >    <div class = "row" >      <div class = "col-md-8 col-md-offset-2" >        <div class = "panel panel-default" >          <div class = "panel-heading" >Login</div>          <div class = "panel-body" >            <form action= "{{ url('/auth/login') }}" method= "post" role= "form" class = "form-horizontal" >              <input type= "hidden" name= "_token" value= "{{ csrf_token() }}" >              <div class = "form-group" >                <label class = "col-md-4 control-label" >邮箱:</label>                <div class = "col-md-6" >                  <input type= "email" name= "email" class = "form-control" >                </div>              </div>              <div class = "form-group" >                <label class = "col-md-4 control-label" >密码:</label>                <div class = "col-md-6" >                  <input type= "password" name= "password" class = "form-control" >                </div>              </div>              <div class = "form-group" >                <div class = "col-md-offset-4 col-md-8" >                  <button type= "submit" class = "btn btn-primary" >登录</button>                </div>              </div>            </form>          </div>        </div>      </div>    </div> </div> </body> </html>

4.2 登录后跳转

登录后的跳转跟注册后的跳转是一样的:

?
1 protected $redirectPath = '/' ;

4.3 登录失败跳转

当登录失败了Laravel会默认跳转回 auth/login 路由,这也是可以自定义的:

?
1 protected $loginPath = '/error' ;

4.4 修改登录用户名

默认的登陆用户名是邮箱,我们可以在AuthController中自定义:

?
1 2 // 该属性默认为email,改成name是以用户名作为账号类型登录。 protected $username = 'name' ;

4.5 查看用户信息

我们可以通过Auth门面的方法来访问已经登录进来的用户:

?
1 Auth::user()

4.6 检查用户是否登录

?
1 2 3 if (Auth::check()) {    // 这个用户已经登录... }

4.7 用于登录失败次数限制

Laravel支持这种逻辑,我们只需要在AuthController中引入 ThrottlesLogins 这个trait 即可。一分钟内登录5次都不成功就会锁闭一分钟,它是基于 用户名/邮箱和IP地址的。

5 登出用户

我们只需要访问 /auth/logout 就可以登出用户了,当然还有一个方法 就是Auth门面方法:

?
1 Auth::logout();

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

原文链接:https://www.cnblogs.com/sun-kang/p/7604829.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容