laravel+vue项目
熟悉基本命令操作
下载laravel框架
|--composer create-project --prefer-dist laravel/laravel blog
数据库配置
1、修改.env文件
创建控制器
1.php artisan make:controller Admin/LoginController[控制器放在app/Http/Controllers/Admin]
创建模型
1.php artisan make:model User
2.模型默认放在app/
3.我们可以这样创建:php artisan make:model Model/User,这样模型会放在app/Model/
4.php artisan make:model Model/Admin -m 创建模型的同时生成迁移文件
模板文件
1.命名:index.blade.php
2.位置:resources/views/
创建迁移
1.php artisan make:migration create_users_table
2.手册:数据库--数据库迁移
下载laravel-ide-helper[参考其手册]
|--在composer安装包里面搜索laravel-ide-helper
|--下载:composer require barryvdh/laravel-ide-helper
|--Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class,这句话添加到config/app.php里面providers
|--执行php artisan ide-helper:generate
|--如果执行完成没有提示,重启ide
后台实现功能
1.登录
2.修改密码
3.标签添加
4.课程添加
准备工作(运行迁移和数据填充)
1.创建Admin模型同时创建迁移文件: php artisan make:model Model/Admin -m
2.修改迁移文件,增加字段【参考手册:数据库--数据迁移】
3.执行迁移:php artisan migrate
4.运行迁移时报错:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes
|--4.1.方式一:切换mysql版本5.7
|--4.2(建议采用).方式二:config/database.php找到mysql,修改如下
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
|--4.3.方式三:app/Providers/AppServiceProvider.php里面boot方法:
\Illuminate\Support\Facades\Schema::defaultStringLength(191);
|--注意:三种方式解决,选择其一即可
5.factory(模型工厂)进行数据填充
|--5.1.参考是手册:数据库--数据填充--使用模型工厂
|--5.2.文件位置:database/factories/
|--5.3.将database/factories/UserFactory.php复制一份进行修改,修改如下:
$factory->define(App\Model\Login::class, function (Faker $faker) {
return [
'username' => $faker->name,
'password' => bcrypt('admin888'),
];
});
|--5.4.在phpstorm终端(Terminal)执行:php artisan tinker,注意这个时候会打开shell,如下格式:
➜
Psy Shell v0.9.3 (PHP 7.1.8 — cli) by Justin Hileman
>>>
|--5.5.注意这个时候继续再终端执行:factory(App\Model\Login::class,3)->create();
|--5.6.当看到有三条数据时(查看logins表有三条数据),执行成功,退出终端即可。
后台登录
1.使用laravel自带的用户认证
2.配登录post路由(routess/admin/admin.php)
3.修改app/config/Auth.php,修改guards、providers
4.修改app/Model/Admin.php,模型中继承:\Illuminate\Foundation\Auth\User,参考app/User.php
5.请求登录前,请确认form表单提交方式和提交地址、表单name属性
6.在表单中增加:{{csrf_field ()}}【参考手册:基础功能--csrf保护】
7.点击登录请求代码:[手册:安全相关--用户认证]
if($request->isMethod('post')){
$status = Auth::guard('admins')->attempt([
'username' => $request->input('username'),
'password' => $request->input('password')
]);
if($status){
return redirect ('/admin/entry');
}
return redirect ('/admin/login')->with ('error','用户名或者密码不正确');
}
8.模板中错误提示
@if(session('error'))
<p class="text-muted text-center alert alert-danger" style="margin-bottom: 0"><small>{{session('error')}}</small></p>
@endif
中间件进行登录验证
1.手册参考:基础功能--中间件
2.创建中间件:php artisan make:middleware AdminMiddleware
3.中间件注册:app/Http/Kernel.php
|--$routeMiddleware里面增加:'admin.auth'=>AdminMiddleware::class,【注意导入命名空间:use App\Http\Middleware\AdminMiddleware;】
4.中间件中增加验证【参考中间件中--注册中间件】
if (!Auth::guard('admin')->check()) {
return redirect('/admin/login');
}
5.控制器中构造方法: $this->middleware('admin.auth'); 执行登录验证
修改密码
1.配路由、建对应的控制器方法
2.验证
|--手册参考:基础功能--表单验证--表单请求验证
|--表单请求验证:php artisan make:request LoginRequest;新生成的类保存在 app/Http/Requests 目录下
|--注意该authorize方法,return true
|--rules方法写验证规则,模板显示验证错误消息参考文档:基础功能--表单验证--显示验证错误
|--message方法完成提示消息。自定义错误消息参考文档:基础功能--表单验证--自定义错误消息
|--changePass方法,点击提交按钮请求地址,AdminPost注入进来
|--两次密码是否一致验证:注意确认密码name:password_confirmation
|--增加自定义验证规则,验证原始密码是否正确
public function authorize()
{
//参考手册:安全相关--用户认证--确定当前用户是否认证
return Auth::guard('admin')->check();
}
//自定义验证规则:
public function addValidator(){
//参考手册:基本功能--表单验证--自定义验证规则--使用扩展
Validator::extend('check_pasword', function ($attribute, $value, $parameters, $validator) {
//根据哈希值验证密码参考手册:安全先关--哈希--基本用法
return Hash::check($value,Auth::guard('admin')->user()->password);
});
}
//验证规则
public function rules()
{
//调用自定义验证器
$this->addValidator();
return [
'original_password' => 'required|check_pasword',
'password' => 'required|confirmed',
'password_confirmation' => 'required',
];
}
//提示消息
public function messages()
{
return [
'original_password.required' => '原始密码不能为空',
'original_password.check_pasword' => '原始密码不正确',
'password.required' => '新密码不能为空',
'password.confirmed' => '确认密码跟新密码不一致',
'password_confirmation.required' => '确认密码不能为空',
];
}
|--提示消息
|--第三方提示模板
|--composer安装包列表中搜索 flash
|--composer require laracasts/flash
|--config/app.php增加服务提供者: Laracasts\Flash\FlashServiceProvider::class,
|--php artisan vendor:publish --provider="Laracasts\Flash\FlashServiceProvider";在resource/views/vendor生成文件
|--@include('flash::message')
|--flash()->overlay('Modal Message', 'Modal Title')
|--他的模板中增加模态框显示代码
|--return redirect()->back();
文件上传
1.宝塔面板安装php扩展fileinfo[软件管理--php7.1--设置--安装扩展--fileinfo]
备注:如果安装不上把交换分区设置成1000【位置:Linux工具箱 1.4--设置--Swap/虚拟内存--添加Swap】
2.config/filesystems.php在disks新增一个
'attachment' => [
'driver' => 'local',
'root' => 'attachment',
],