解决Laravel使用验证时跳转到首页的问题

当我们在使用validate等方法进行验证时,如果是错误,则会返回首页

1、直接在请求头中

在请求头header中,accept使用appclication/json,使HTTP请求的接受返回只能是json格式。

2、修改框架函数

//vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php:136
//将该方法中的$this->getRedirectUrl()去掉
//不建议使用,一般情况下尽量不要修改框架的代码

3、建议使用

定义一个BaseRequest基类

<?php

namespace App\Http\Requests;

use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;

class BaseRequests extends FormRequest
{
    /**
     * validate验证失败模板
     * @param Validator $validator
     */
    protected function failedValidation(Validator $validator)
    {
        $message = '';
        foreach (json_decode(json_encode($validator->errors()),1) as $error){
            $message = $error[0];
            break;
        }
        throw (new HttpResponseException(response()->json([
            'code' => 400,
            'msg'  => $message,
            'data' => []
        ])));
    }
}

个人认为这个方法一言难尽,不是很好。

4、最终我使用的解决办法

在JSON请求时,头部的Accept指定为appliaction/json即可解决,当为JSON访问时,则返回错误信息正常,非JSON时返回首页,一定程度也是一个保护呢。

到此这篇关于Laravel使用验证时跳转到首页的解决办法的文章就介绍到这了,更多相关Laravel验证跳转到首页内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Laravel重定向,a链接跳转,控制器跳转示例

    Laravel重定向分类如下: 1.a链接跳转: <a class="btn btn-success" href="{{url('admin/organization/createAuthCodeView', ['id' => $list['id']])}}" rel="external nofollow" >生成注册码</a> 2.form表单提交跳转: <form class="form-inli

  • laravel 数据验证规则详解

    如下所示: return [ 'accepted' => '必须为yes,on,1,true', 'active_url' => '是否是一个合法的url,基于PHP的checkdnsrr函数,因此也可以用来验证邮箱地址是否存在', 'after:date' => '验证字段必须是给定日期后的值,比如required|date|after:tomorrow,通过PHP函数strtotime来验证', 'after_or_equal:date' => '大于等于', 'alpha'

  • Laravel 验证码认证学习记录小结

    注:此处所用的注册等系列功能,均作用于 laravel 自带的用户认证机制 注册验证码 1. composer 安装验证码 composer require "mews/captcha:~3.0" 2. 运行以下命令生成配置文件 config/captcha.php php artisan vendor:publish --provider='Mews.aptcha.aptchaServiceProvider' 3. 前端展示验证码 <img class="thumbn

  • laravel 解决强制跳转 https的问题

    路由要从http redirect 到 https,可以改 nginx/apache 配置.如果不想在web server中做这些修改配置,可以尝试在laravel框架中解决 在网上里看到的一个方案是 写一个 全局中间件,将所有的请求转换成 https [利用$request->scure() 来判断 和 转化] 不过我发现这个做法在直接访问首页的时候并不能实现转化 (route为 " / " 的时候) 然后换了方法: 1.在 app/Providers/AppServicePr

  • Laravel实现登录跳转功能

    前言 登录跳转: 不同的用户在登录成功之后跳转到不同的网页当中 例如:网站管理员登录成功后跳转到网站后台,vip用户登录成功后跳转到vip页面 准备工作 用户表 CREATE TABLE `users` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, `email` varchar(191) COLLATE utf8mb4_un

  • laravel 表单验证实现多个字段组合后唯一

    Laravel 表单验证器的几种使用方法 1.使用控制器的 validate 方法进行参数验证 /** * 保存一篇新的博客文章. * * @param Request $request * @return Response */ public function store(Request $request) { $this->validate($request, [ 'title' => 'required|unique:posts|max:255', 'body' => 'requi

  • 解决Laravel使用验证时跳转到首页的问题

    当我们在使用validate等方法进行验证时,如果是错误,则会返回首页 1.直接在请求头中 在请求头header中,accept使用appclication/json,使HTTP请求的接受返回只能是json格式. 2.修改框架函数 //vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php:136 //将该方法中的$this->getRedirectUrl()去掉 //不建议使用,一般情况下尽量不要修改框架的

  • Android 表情面板和软键盘切换时跳闪问题的解决方法

    现在很多应用都会在让用户输入各种文本信息的时候同时多提供一个表情面板,这样就会出现一个问题,即表情面板的跳闪问题要输入文本信息,那固然是需要弹出软键盘,在软键盘显示的情况下,此时如果要切换显示出表情面板,由于表情面板不可能和用户的软键盘高度恰好一样,此外由于控件的上下移位,就会出现表情面板的跳闪现象 在点击切换按钮的时候,表情面板会先向上跳,然后再往下移,这样就会带来很差的用户体验,效果如下图所示: 这里提供一个解决方案,使软键盘和表情面板可以很自然地切换,效果如下图所示: 解决思路主要是这样:

  • 解决使用IDEA时跳转到.class的问题

    IDEA时跳转到.class的解决 项目背景:jdk1.8 软件环境:IDEA 问题: 两个不同的项目,在A项目中写了一个实体类.B项目中引用.我想修改下实体类的内容,就在在B项目中CTRL+鼠标左键点击进入,正常情况下是进入了源码文件,也就是.JAVA文件.偏偏就跳转到了实体类的.class文件,而不是源码文件 解决方法: 进入.class文件后,顶端会有一个黄色的显示条. 两个选项:Download Sources  和 Choose Sources .点击Choose Sources.选择

  • 三个思路解决laravel上传文件报错:413 Request Entity Too Large问题

    最近一个项目当中,要求上传图片,并且限制图片大小,虽然在laravel当中已经添加了相关的表单验证来阻止文件过大的上传,然而当提交表单时,还没轮到laravel处理,nginx就先报错了.当你仔细看报错页面时,你会发现有nginx版本信息,经过分析,这报错是因为nginx的默认上传文件大小配置client_max_body_size只有2MB, 基于nginx验证比laravel验证要早,想要友好报错而不是直接显示413 Request Entity Too Large,那么就有三个思路去解决.

  • Validform验证时可以为空否则按照指定格式验证

    在使用Validform v5.3.2时(http://validform.rjboy.cn/) 问题:可以为空,但不为空时需要按照指定格式验证数据 查看文档: 5.2.1版本之后,datatype支持: 1.直接绑定正则:如可用这样写datatype="/\w{3,6}/i",要求是3到6位的字母,不区分大小写: 2.支持简单的逻辑运算:如datatype="m | e, *4-18 | /\w{3,6}/i | /^validform\.rjboy\.cn$/"

  • 解决ASP中http状态跳转返回错误页的问题

    IIS默认的错误页是很不友好的,很多人看到默认的错误页时都会说:网站打不开了!白白损失了这部分流量.而如果错误页直接跳转到首页又对搜索引擎很不友好,搞不好首页还会被封掉.所以根据情况,有两个方法解决这个问题: 如果是博客等内容型的网站,可以返回一个带有404错误的搜索框让访客搜索,若是电子商务型网站,则可以返回一个带有404错误的进度条进行跳转.这两种方法即照顾了访客又顾及到了SEO. 可以在Google webmaster tools中查看自己网站错误页有多少. 修改默认错误页的方法很简单:在

  • 解决vue单页路由跳转后scrollTop的问题

    作为vue的初级使用者,在开发过程中遇到的坑太多了.在看页面的时候发现了页面滚动的问题,当一个页面滚动了,点击页面上的路由调到下一个页面时,跳转后的页面也是滚动的,滚动条并不是在页面的顶部. 最开始我使用了一个很笨的方法,每个页面上都加上window.scrollTop(0,0);来解决问题,但是这个太繁琐了.最后和小伙伴们商量了一下,在main.js页面上加了这么一段代码 router.afterEach(function (to) { window.scrollTo(0, 0) }) 路由跳

  • 解决laravel 出现ajax请求419(unknown status)的问题

    如下所示: 这个是因为laravel自带CSRF验证的问题 解决方法 方法一:去关掉laravel的csrf验证,但这个人不建议,方法也不写出来了. 方法二:把该接口写到api.php上就好了 方法三: 首先在页面加上 <meta name="csrf-token" content="{{ csrf_token() }}" /> 然后请求的在header里面加上 'X-CSRF-TOKEN': $('meta[name="csrf-token&

  • 解决Laravel blade模板转义html标签的问题

    解决Laravel blade模板转义html标签的问题: 后台textarea提交到表里面的数据展现到前端页面时(在后台已使用nl2br()函数进行转换),直接显示如下: 很尴尬!!! 解决方法如下: {!! $res->content !!} 中间部分是需要输出到页面的内容 使用{{}}会自动使用php中的htmlspecialchars方法来转义成实体,然后输出 上面那种方法可以不转义输出 新手,马克一下... 以上这篇解决Laravel blade模板转义html标签的问题就是小编分享给

  • 解决安装python库时windows error5 报错的问题

    python安装库时,有时候会报错windows error 5,可以尝试关闭所有使用python的编辑器.文件等,然后重新pip安装,如果还是不行,可以将报错最下层文件删除即可(如果不放心可以将该文件先备份),记录之~ windows error错误代码: windows error错误代码: 0操作成功完成. 1功能错误. 2系统找不到指定的文件. 3系统找不到指定的路径. 4系统无法打开文件. 5拒绝访问. 6句柄无效. 7存储控制块被损坏. 8存储空间不足,无法处理此命令. 9存储控制块

随机推荐