精华内容
下载资源
问答
  • Laravel Vue模板通过减轻许多Web项目中使用的常见任务来减轻开发工作的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel Vue模板易于访问,功能强大,并...
  • 高级开发系列-Laravel-Vue项目 高级开发系列-用于后端和管理面板的LaravelVue项目
  • 这是具有JWT身份验证的Laravel(5.5)Vue js SPA(单页应用程序)样板项目。 安装 在开始之前,请检查官方的laravel安装指南以了解服务器要求。 克隆存储库 git clone ...
  • icloth商店 项目设置 yarn install 编译和热重装以进行开发 yarn serve 编译并最小化生产 yarn build 整理和修复文件 yarn lint 自定义配置 请参阅。
  • 莎娜(Shayna) 项目设置 npm install 编译和热重装以进行开发 npm run serve 编译并最小化生产 npm run build 整理和修复文件 npm run lint 自定义配置 请参阅。
  • Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,...
  • laravel+vue项目

    千次阅读 2018-06-28 19:52:55
    laravel+vue项目 手册地址:https://laravel-china.org/docs/laravel/5.6[中文文档] 手册地址:https://laravel.com/[英文文档] 熟悉基本命令操作 下载laravel框架 |--composer create-project --prefer-...

    laravel+vue项目

    手册地址:https://laravel-china.org/docs/laravel/5.6[中文文档]

    手册地址:https://laravel.com/[英文文档]

    熟悉基本命令操作

    下载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',
            ],            
    
    展开全文
  • laravel vue options请求解决方案最近在和前端配合写vue项目时候碰到options请求,但是laravel接口规定是get就是get post就是post!下边两种解决方案:前端引入qs#安装qsnpminstallqs#main.js中引入qsimportqsfrom'...

    laravel vue options请求解决方案

    最近在和前端配合写vue项目时候碰到options请求,但是laravel接口规定是get就是get post就是post!

    下边两种解决方案:前端引入qs#安装qs

    npm install qs

    #main.js中引入qs

    import qs from 'qs

    Vue.prototype.$qs = qs

    #使用

    this.$axios.post("http://xxx/",

    this.$qs.stringify(postData)

    ).then(data => {

    if (data.data.status != 200) {

    //xxx

    } else {

    //xxx

    }

    });

    这样就不会出现options!具体原因我还在追查~

    2. laravel后端解决

    创建中间件(如图)

    6e13ff3d09c4e4308446315296caee81.png

    代码:<?php

    namespace App\Http\Middleware;

    use Closure;

    use Illuminate\Support\Facades\Input;

    use Illuminate\Support\Facades\Log;

    use Illuminate\Support\Facades\URL;

    class OptionsAccess

    {

    /**

    * Handle an incoming request.

    *

    * @param  \Illuminate\Http\Request  $request

    * @param  \Closure  $next

    * @param  string|null  $guard

    * @return mixed

    */

    public function handle($request, Closure $next, $guard = null)

    {

    if($request->getMethod() === 'OPTIONS'){

    $origin = $request->header('ORIGIN', '*');

    header("Access-Control-Allow-Origin: $origin");

    header("Access-Control-Allow-Credentials: true");

    header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE');

    header('Access-Control-Allow-Headers: Origin, Access-Control-Request-Headers, SERVER_NAME, Access-Control-Allow-Headers, cache-control, token, X-Requested-With, Content-Type, Accept, Connection, User-Agent, Cookie, X-XSRF-TOKEN');

    }

    return $next($request);

    }

    }

    把中间件放入总中间件中(Kernel.php)

    0d22aabf6bb2536094c5fffabf7a7a78.png

    这样就把所有的options请求处理了!  为啥要吧中间处理放在第一个 protected $middleware中那?由于群组路由中间件是在路由匹配过程之后才进入,因此之前实验中提及的OPTIONS请求尚未通过此处中间件的handle函数,就已经返回了,因此我们添加的中间件,需要添加到$middleware数组中,不能添加到api群组路由中间件中。

    laravel vue options请求解决了  暂时先这样 追查到原因后再来详细写!

    laravel vue options请求解决方案

    展开全文
  • <div><p>I am using tailwind in a laravel project inside a vue file. The extension is not showing auto-completes.</p><p>该提问来源于开源项目:tailwindlabs/tailwindcss-intellisense</p></div>
  • 由惊人的提供支持 :high_voltage: Laravel Ease是应用程序中包含所有电池的隔离沙盒,可用于构建,试验和预览Vue组件。 完全基于文件系统的Vue路由,意味着您可以忘记设置,而专注于真正重要的事情-为应用程序构建...
  • Shaynalaravue 项目设置 npm install 编译和热重装以进行开发 npm run serve 编译并最小化生产 npm run build 整理和修复文件 npm run lint 自定义配置 请参阅。
  • 下载地址:百度网盘

     

    下载地址:百度网盘

    展开全文
  • m using Ziggy library to use Laravel routes in my Vue app, so I can use route() helper, but I have no idea how to use it to send the pageview to Google Analytics.</p><p>该提问来源于开源项目:...
  • 主要介绍了详解用Docker搭建LaravelVue项目的开发环境,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 在做前后台分离的项目中,认证是必须的,由于http是无状态的。前台用户登录成功后,后台给前台返回token。之后前台给后台发请求每次携带token。...Laravel本身自带几种验证方式,下面介绍下token认证的实现的方...

    在做前后台分离的项目中,认证是必须的,由于http是无状态的。前台用户登录成功后,后台给前台返回token。之后前台给后台发请求每次携带token。

    原理也非常简单:

    前天在请求头中添加 Authorization,如下

    image.png

    后台取到值,然后去用户表的api_token列进行匹配,如果查到说明验证成功,并且返回相关信息。

    Laravel本身自带几种验证方式,下面介绍下token认证的实现的方法。

    前台在向后台发起请求时要携带一个token

    后台需要做一个返回当前登录用户的信息的api,地址是 /api/user

    先添加路由,当给 route/api.php 添加

    Route::middleware('auth:api')->get('/user', function (Request $request) {

    echo $request->user();

    });

    如果浏览器直接访问 http://mydomain.com/api/user 会返回 401 Unauthorized

    原因是在config/auth.php中有下面的关键配置

    'guards' => [

    'web' => [

    'driver' => 'session',

    'provider' => 'users',

    ],

    'api' => [

    'driver' => 'token',

    'provider' => 'users',

    ],

    ],

    可以看到通过api访问走的是token认证,这里没有提供token所以就认证失败返回401了。

    'driver' => 'token' 实际调用的是\vendor\laravel\framework\src\Illuminate\Auth\TokenGuard.php

    上面说到我们需要在request里提供api_token参数,为了区别是哪个用户,需要在user表添加api_token字段

    image.png

    认证过程调用的是getTokenForRequest方法

    public function getTokenForRequest()

    {

    $token = $this->request->query($this->inputKey);

    if (empty($token)) {

    $token = $this->request->input($this->inputKey);

    }

    if (empty($token)) {

    $token = $this->request->bearerToken();

    }

    if (empty($token)) {

    $token = $this->request->getPassword();

    }

    return $token;

    }

    这个bearerToken实际找header中是否存在Authorization

    public function bearerToken()

    {

    $header = $this->header('Authorization', '');

    if (Str::startsWith($header, 'Bearer ')) {

    return Str::substr($header, 7);

    }

    }

    先给user表添加api_token字段

    php artisan make:migration add_api_token_to_users --table=users

    内容

    class AddApiTokenToUsers extends Migration

    {

    /**

    * Run the migrations.

    *

    * @return void

    */

    public function up()

    {

    Schema::table('users', function (Blueprint $table) {

    $table->string('api_token', 60)->unique();

    });

    }

    /**

    * Reverse the migrations.

    *

    * @return void

    */

    public function down()

    {

    Schema::table('users', function (Blueprint $table) {

    $table->dropColumn('api_token');

    });

    }

    }

    打开navicat进到user表里,更新users的api_token。

    image.png

    打开postman

    image.png

    注意这里的header,key是Authorization,值就是Bearer+空格+刚才数据库里设的api_token

    这样就能返回内容啦,修改其他用户的token能返回相应的用户信息,说明认证成功,功能基本完成!

    下面完善细节

    完善逻辑

    修改 \app\Http\Controllers\Auth\RegisterController.php

    protected function create(array $data)

    {

    return User::create([

    'name' => $data['name'],

    'email' => $data['email'],

    'password' => bcrypt($data['password']),

    // 添加这行

    'api_token' => str_random(60),

    ]);

    }

    User Model 的 $fillable也改下

    protected $fillable = [

    'name', 'email', 'password', 'api_token',

    ];

    如果在前台页面,发起请求时如何给后台传这个Authorization header? 方法如下

    注意,下面的是Laravel5.4的修改方法。新版本可能有细微区别,只要知道原理就能自己改了。

    打开 \resources\assets\js\bootstrap.js 参照着csrf-token。合适的地方添加下面的代码

    let token = document.head.querySelector('meta[name="csrf-token"]');

    let api_token = document.head.querySelector('meta[name="api-token"]');

    if (token) {

    // 这个要参考axios的文档

    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = Laravel.csrfToken =token.content;

    // 如果用的jquery

    // Fix jquery ajax crossDomain without Token

    // jQuery.ajaxPrefilter(function (options, originalOptions, jqXHR) {

    // // if (options.crossDomain) {

    // jqXHR.setRequestHeader('Authorization', api_token.content);

    // jqXHR.setRequestHeader('X-CSRF-TOKEN', token.content);

    // //}

    // });

    } else {

    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');

    }

    if (api_token) {

    window.axios.defaults.headers.common['Authorization'] = api_token.content;

    } else {

    console.error('Authorization token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');

    }

    最后修改公共视图模版中 \views\layouts\app.blade.php

    总结:

    本质上给用户表添加api_token,后台根据这个字段判断是否是有效的用户,无效返回401,有效返回查询结果。

    优点是容易理解,缺点太简单,安全也不够。

    为了安全,可以实现下面的功能:

    每次登录成功后刷新api_token为新值

    其实 Laravel 官方提供了一个 Laravel Passport 的包。Laravel Passport is an OAuth2 server and API authentication package 。

    具体使用请等更新。

    问题:

    如何修改默认的api_token列?

    展开全文
  • Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,...
  • Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,...
  • 最近做一个项目是php的laravel+vue项目,刚开始还好,用的东西还不多也挺顺利的,遇到的问题也都解决了,随着项目功能的增多,项目的首页加载速度也越来越慢,打开控制台,app.js文件竟然加载了6、7s,这是一个...
  • 在做前后台分离的项目中,认证是必须的,由于http是无状态的。前台用户登录成功后,后台给前台返回token。之后前台给后台发请求每次携带token。...Laravel本身自带几种验证方式,下面介绍下token认证的实现的方...
  • 简单记录一下laravel+vue项目中使用vue路由实现的动态标签 直接上一个真实的操作效果吧,只是实现了基本功能,没有去布局 实现动态路由是直接对vue的路由直接进行操作,然后跟换组件页面来实现的。 js代码 RouteTag...
  • Laravel试图通过减轻大多数Web项目中使用的常见任务来减轻开发工作的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,但功能强大,可提供大型,...
  • 莎娜(Shayna) 项目设置 npm install 编译和热重装以进行开发 npm run serve 编译并最小化生产 npm run build 整理和修复文件 npm run lint 自定义配置 请参阅。
  • 在做前后台分离的项目中,认证是必须的,由于http是无状态的。前台用户登录成功后,后台给前台返回token。之后前台给后台发请求每次携带token。 原理也非常简单: 前天在请求头中添加 Authorization,如下 ...
  • 在这篇文章中我们将通过Docker在个人本地电脑上构建一个快速、轻量级、不依赖本地电脑所安装的任何开发套件的可复制的LaravelVue项目的开发环境(开发环境的所有依赖都安装在Docker构建容器里),加入Vue只是因为...
  • laravel+vue项目跳转拦截器

    千次阅读 2017-08-28 17:21:56
    这两天写项目的时候遇到的一个问题:基于laravelvue实现的后台系统,实现跳转拦截,在前端页面跳转的时候判断用户是否已经登录,若没有就跳到登录界面。 总的来说,我有已下两种解决思路:1. 在laravel中使用...
  • laravel+vue项目前后端分离CSRF_TOKEN设置一般laravel项目的CSRF_TOKEN的设置都在blade.html中设置 为了更方便的管理项目,采用了前后端分离,分别独立管理。在进行数据交互的时候遇到了CSRF_TOKEN相关设置的问题。 ...
  • 开箱即用,并使用额外功能来构建新的Laravel SPA项目时,请投入工作! 单击照片以在兼容的浏览器中查看简短的演示 重要 如果您正在使用该项目,请在每次更新时查阅。 官方文件 该文档位于分为后端和前端。 请注意...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,749
精华内容 699
关键字:

laravelvue项目

vue 订阅