PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了laravel 7 在线教育项目实操笔记(2)--后台基础功能开发大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

基础功能后台登录退出后台首页页面的展示
1、创建管理员数据表
数据字典:在以后开发项目的时候经常的去用到。数据字典就是通过表格化的形式展示了数据表中应该有的字段信息。

表名:manager

 

1、创建迁移文件
PHP artisan make:migration create_manager_table
2、编写迁移文件代码,文件位置:database/migrations/
public function up()
    {
        Schema::create('manager', function (Blueprint $table) {
            $table->increments('id');  //主键
            $table->string('username',20)->notNULL(); //用户名
            $table->string('password')->notNULL(); //密码
            $table->enum('gender',[1,2,3])->notNULL()->default('1'); //性别 1男 2女 3保密
            $table->string('mobile',11); //手机
            $table->string('email',50); //邮箱
            $table->tinyinteger('role_id'); //角色
            $table->timestamps(); //时间
            $table->rememberToken(); //记住登录
            $table->enum('status',[1,2])->notNULL()->default('2'); //账号状态

        });
    }
    public function down()
    {
//删表方法 Schema::dropIfExists('manager'); }

3、执行迁移文件

PHP artisan migrate:install                         //首次使用迁移先生成迁移记录表

PHP artisan migrate

4、快速填充数据  

插件 faker

创建填充器文件 PHP artisan make:seeder ManagerTableSeeder

编写填充器的代码文件 使用方法参考:https://packagist.org/packages/fzaninotto/faker

提示:在laravel中系统提供了一个用户密码加密的函数:bcrypt,语法:bcrypt(密码文明)

database\seeds\ManagerTableSeeder.PHP

<?PHP

use Illuminate\Database\Seeder;

class ManagerTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $faker = Faker\Factory::create("zh_CN");
        for($i=0;$i<100;$i++) {
            $data[] = [
                'username' => $faker->username,
                'password' => bcrypt("123456"),
                'gender' => mt_rand(1, 3),
                'mobile' => $faker->phoneNumber,
                'email' => $faker -> email,
                'role_id' => mt_rand(1, 6),
                'created_at' => date('y-m-d H:i:s', time()),
                'status' => mt_rand(1, 2)
            ];
        }
         DB::table('manager')->insert($data);
    }
}

 执行填充器文件 PHP artisan db:seed --class=ManagerTableSeeder

5、后台登录页面的展示

确定路由 /admin/public/login

到routes/web.PHP添加路由

Route::group(['prefix'=>'admin'],function () {
    Route::get('public/login',  'Admin\PublicController@login');
});

6、创建控制器文件

PHP artisan make:controller Admin\PublicController

7、创建需要的login方法 在app\Http\Controllers\Admin\PublicController.PHP添加

public function login(){
       return view('admin.public.login');


    }

8、创建需要的视图文件H-ui admin模板演示 http://www.H-ui.net/H-ui.admin.shtml

将login.html文件复制到 /resources/views/admin/public/下 如无admin/public文件夹  自己手动创建

改login.html名为login.blade.PHP页面中使用的js css文件地址替换为项目中实际的文件地址

9、登录页面验证码添加

 验证码的下载地址:https://packagist.org/packages/mews/captcha  安装命令:composer require mews/captcha

10、配置config/app.PHP文件中的providers和aliases数组

providers中加 Mews\Captcha\CaptchaServiceProvider::class,

aliases中加 'Captcha' => 'Mews\Captcha\Facades\Captcha',

11、修改模板验证码图片URL地址为 {{Captcha::src('edu')}}

edu为自己配置 配置地址 vendor\mews\captcha\config\config.PHP

'edu' => [
        'length' => 4,
        'width' => 120,
        'height' => 36,
        'quality' => 90,
        'math' => false,
    ],

 12、管理员登录自动验证 提交的路由地址路由:/admin/public/check                post

将模板文件中接收用户名 密码的 url修改为 /admin/public/check

13、添加csrf验证的隐藏域 添加位置 :from表单内的任何位置  如 {{csrf_field()}}</from>

14 记住登录功能 给“使我保持登录状态”复选框添加一个认值如 value=1

<input type="checkBox" name="online" id="online" value="1">
            使我保持登录状态</label>

 15 编写check方法

语法:$this -> validate($request,[规则数组]);

public function check(Request $request){
        $this->validate($request,[
            'username' =>'required|min:2|max:20',  //最小2 最大20位
            'password' =>'required|min:6',  //最小6位
            'captcha'  =>'required|size:4|captcha', //验证码长度

        ]);

 16 在登录模板页面显示自动验证没有通过的时候的错误信息

<SCRIPT type="text/javascript">
    @if (count($errors) > 0)

        var allError="";
        @foreach ($errors->all() as $error)
            allError +="{{$error}}<br>";

        @endforeach
layer.alert(allError,{title:'错误提示'});
    layer.msg(allError, {
        time: 20000, //20s后自动关闭
        btn: ['确定']
    });

    @endif

</SCRIPT>  //使用layerjs插件  记得引入layer

 17、管理员身份验证

语法:Auth::guard(指定guard实例) -> attempt(需要验证的用户信息关联数组,[bool值]);

因需要auth门面 所以在PublicController.PHP中引入

use Auth;

 18、在/config/auth.PHP添加guard实例

 仿照官方原有的实例 guards数组中添加

 'admin' => [
            'driver' => 'session',
            'provider' => 'admin',
        ],

 providers数组中添加

'admin' => [
            'driver' => 'eloquent',
            'model' => App\Admin\Manager::class,
        ],

 // 'model' => App\Admin\Manager::class 为创建实例所用到的模型 稍后添加

19、创建需要使用的模型(guard需要使用)

PHP artisan make:model Admin/Manager

20、定义模型的基本属性:app\Admin\Manager.PHP文件中  添加

protected  $table = 'manager';  //定义当前模型需要关联的MysqL

记得在class Manager extends......内添加

21、继续身份验证 PublicController.PHP文件

添加     $data= $request -> only(['username','password']);
        $data['status'] = '2';
        $result=Auth::guard('admin')->attempt($data,$request->get('online'));

dd($result); 打印结果  false为验证不成功

 

22、在验证对的情况下会产生报错

修改app\Admin\Manager.PHP

添加 use Illuminate\Auth\Authenticatable;

class Manager extends Model implements \Illuminate\Contracts\Auth\Authenticatable

添加 use Authenticatable;

完整代码

<?PHP

namespace App\Admin;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Authenticatable;

class Manager extends Model implements \Illuminate\Contracts\Auth\Authenticatable
{
    //
    protected  $table = 'manager';
    use Authenticatable;
}

 23、根据错误信息判断跳转方向:

语法:return redirect(路由) -> withErrors([错误信息的数组]);

if($result){
            return redirect("/admin/index/index");
        }
        else{
            return redirect("/admin/public/login")->withErrors(['loginerror'=>'用户名密码错误']);
        }

 完整代码

<?PHP

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Auth;

class PublicController extends Controller
{
    //登录页面的展示
    public function login(){
       return view('admin.public.login');


    }
    public function check(Request $request){
        $this->validate($request,[
            'username' =>'required|min:2|max:20',
            'password' =>'required|min:6',
            'captcha'  =>'required|size:4|captcha',

        ]);

        //继续开始进行身份核实
        $data= $request -> only(['username','password']);
        $data['status'] = '2';
        $result=Auth::guard('admin')->attempt($data,$request->get('online'));
        if($result){
            return redirect("/admin/index/index");
        }
        else{
            return redirect("/admin/public/login")->withErrors(['loginerror'=>'用户名密码错误']);
        }
    }
    //logout为添加退出登录方法
    public function logout(){
        Auth::guard('admin')->logout();
        return redirect("/admin/public/login");


    }
}

 

大佬总结

以上是大佬教程为你收集整理的laravel 7 在线教育项目实操笔记(2)--后台基础功能开发全部内容,希望文章能够帮你解决laravel 7 在线教育项目实操笔记(2)--后台基础功能开发所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: