大佬教程收集整理的这篇文章主要介绍了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
确定路由 /admin/public/login
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文件地址替换为项目中实际的文件地址
验证码的下载地址: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', //验证码长度 ]);
<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、在验证对的情况下会产生报错
添加 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; }
语法: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,请注明来意。