首页 > 作文

laravel 7 在线教育项目实操笔记(2)–后台基础功能开发

更新时间:2023-04-08 10:02:13 阅读: 评论:0

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

表名:manager

1、创建迁移文件
php artisan make:migration create_manager_table
2、编写迁移文件的代码,文件位置:databa/migrations/
public function up()    {        schema::create('manager', function (blueprint $table) {            $table->increments('id');  //主键            $table->string('urname',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:eder managertableeder

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

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

databa\eds\managertableeder.php

<?phpu illuminate\databa\eder;class managertableeder extends eder{    /**     * run the databa eds.     *     * @return void     */    public function run()    {        $faker = faker\factory::create("zh_cn");        for($i=0;$i<100;$i++) {            $data[] = [                'urname' => $faker->urname,                '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')->inrt($data);    }}

执行填充器文件php artisan db:ed –class=managertableeder

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 安装命令:compor require mews/captcha

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

providers中加 mews\captcha\captcharviceprovider::class,

alias中加 ‘captcha’ => ‘mews\captcha\facades\captcha’,

11、修改模板验证码图片url地址为 {{captcha::src(‘edu’)}}

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

'edu' => [        'length' => 4,        'width' => 120,        'hmumeight' =&风雨夜母子情gt; 36,        'quality' => 90,        'math' => fal,    ],

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

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

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

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

<input type="chabcb的成语eckbox" name="online" id="online" value="1">            使我保持登录状态</label>

15 编写check方法

语法:$this -> validate($reque红色的故事st,[规则数组]);

public function check(request $request){        $this->validate($request,[            'urname' =>'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>";        @endforeachlayer.alert(allerror,{title:'错误提示'});    layer.msg(allerror, {        time: 20000, //20s后自动关闭        btn: ['确定']    });    @endif</script>  //使用layerjs插件  记得引入layer

17、管理员身份验证

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

因需要auth门面 所以在publiccontroller.php中引入

u auth;

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

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

 'admin' => [            'driver' => 'ssion',            '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([‘urname’,’password’]);
$data[‘status’] = ‘2’;
$result=auth::guard(‘admin’)->attempt($data,$request->get(‘online’));

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

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

修改app\admin\manager.php

添加 u illuminate\auth\authenticatable;

class manager extends model implements \illuminate\contracts\auth\authenticatable

添加 u authenticatable;

完整代码:

<?phpnamespace app\admin;u illuminate\databa\eloquent\model;u illuminate\auth\authenticatable;class manager extends model implements \illuminate\contracts\auth\authenticatable{    //    protected  $table = 'manager';    u authenticatable;}

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

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

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

完整代码:

<?phpnamespace app\http\controllers\admin;u app\http\controllers\controller;u illuminate\http\request;u auth;class publiccontroller extends controller{    //登录页面的展示    public function login(){       return view('admin.public.login');    }    public function check(request $request){        $this->validate($request,[            'urname' =>'required|min:2|max:20',            'password' =>'required|min:6',            'captcha'  =>'required|size:4|captcha',        ]);        //继续开始进行身份核实        $data= $request -> only(['urname','password']);        $data['status'] = '2';        $result=auth::guard('admin')->attempt($data,$request->get('online'));        if($result){            return redirect("/admin/index/index");        }        el{            return redirect("/admin/public/login")->witherrors(['loginerror'=>'用户名密码错误']);        }    }    //logout为添加的退出登录方法    public function logout(){        auth::guard('admin')->logout();        return redirect("/admin/public/login");    }}
//记得在web.php中添加 logout规则 route::get('public/logout', 'admin\publiccontroller@logout');

后台首页的展示

定义后台首页的路由约定:/admin/index/index  /admin/index/welcome

24、添加路由 web.php中
route::get('index/welcome','admin\indexcontroller@welcome');
route::get('manager/index','admin\managercontroller@index');

25、 创建需要的控制器文件

php artisan make:controller admin/indexcontroller

26、编写index方法、welcome方法,展示各自的视图

public function index(){        return view('admin.index.index');    }    public  function welcome(){        return view('admin.index.welcome');    }

27、创建需要的两个视图文件(index.blade.php和welcome.blade.php)

复制h-ui admin模板文件夹中的 index.html welcome.html文件到resources\views\admin\index\下 并改名为 index.blade.php welcome.blade.php

如无文件夹 手动创建

记得修改模板所需的js css路径

28、获取已经登录的用户名

{{auth::guard('admin')->ur()->urname}}

29、路由保护 语法:-> middleware(中间件名称)

在web.php中需要保护的路由 如

 route::get('index/welcome','admin\indexcontroller@welcome')->middleware('auth:admin'); route::get('manager/index','admin\managercontroller@index')->middleware('auth:admin');

也可以分组如

route::group(['prefix'=>'admin'],function () {    route::get('public/login',  'admin\publiccontroller@login')->name('login');    route::post('public/check', 'admin\publiccontroller@check');    route::get('public/logout', 'admin\publiccontroller@logout');});route::group(['prefix'=>'admin','middleware'=>'auth:admin'],function () {    route::get('index/index','admin\indexcontroller@index');    route::get('index/welcome','admin\indexcontroller@welcome');    route::get('manager/index','admin\managercontroller@index');});

注意:a. 需要判断是否登录页面全部都加上中间件的保护;

b. 在跳转的时候,系统默认使用login路由别名,如果没有则报“路由找不到”的错误,因此需要给登录路由添加“login”别名;

本文发布于:2023-04-08 10:01:11,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/8b73fdae2739fa02fff4aeb3e6877e2c.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:laravel 7 在线教育项目实操笔记(2)–后台基础功能开发.doc

本文 PDF 下载地址:laravel 7 在线教育项目实操笔记(2)–后台基础功能开发.pdf

标签:文件   路由   页面   模板
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图