首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

laravel 5:如何根据登录与否创建两种类型的404页面

在Laravel 5中,可以通过中间件和路由来实现根据登录与否创建两种类型的404页面。

首先,我们需要创建两个自定义的404页面,一个用于已登录用户,另一个用于未登录用户。可以在resources/views/errors目录下创建两个视图文件,例如logged_in_404.blade.phpguest_404.blade.php

接下来,我们可以创建一个中间件来检查用户是否已登录。可以使用以下命令创建一个中间件:

代码语言:txt
复制
php artisan make:middleware CheckLoggedIn

然后,在生成的app/Http/Middleware/CheckLoggedIn.php文件中,我们可以在handle方法中添加以下代码:

代码语言:txt
复制
public function handle($request, Closure $next)
{
    if (auth()->check()) {
        // 已登录用户
        config(['view.paths' => [resource_path('views/logged_in')]]);
    } else {
        // 未登录用户
        config(['view.paths' => [resource_path('views/guest')]]);
    }

    return $next($request);
}

接下来,我们需要将中间件注册到路由中。可以在app/Http/Kernel.php文件的$routeMiddleware数组中添加以下代码:

代码语言:txt
复制
protected $routeMiddleware = [
    // ...
    'checkLoggedIn' => \App\Http\Middleware\CheckLoggedIn::class,
];

然后,在路由文件中,可以使用checkLoggedIn中间件来定义两种类型的404页面。例如:

代码语言:txt
复制
Route::group(['middleware' => 'checkLoggedIn'], function () {
    // 已登录用户的路由
    Route::get('/dashboard', function () {
        return view('dashboard');
    });
});

// 未登录用户的路由
Route::get('/home', function () {
    return view('home');
});

这样,当已登录用户访问/dashboard时,将使用logged_in_404.blade.php作为404页面;当未登录用户访问/home时,将使用guest_404.blade.php作为404页面。

关于Laravel 5的更多信息和使用方法,可以参考腾讯云的Laravel 5产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

掌握 Laravel 测试方法

继而,讲解如何Laravel 项目中创建「单元测试」和「功能测试」用例。...单元测试和功能测试 如果您已经接触过 PHPUnit 框架,那么您应该知道,它支持两种类型特性 -- 「单元测试」和「功能测试」。 「单元测试」目的是用于测试函数或方法正确性。...例如,我们可以为包含如下步骤登录功能实现一个功能测试用例: 发起一个访问登录页面的 GET 请求; 判断我们是否处在登录页面; 生成用于采用 POST 请求方式登录登录数据; 判断是否创建登录会话数据成功...这就是应该如何创建「功能测试」用例秘密。接下来我们将创建具体测试用例,来讲解如何Laravel 中使用「单元测试」和「功能测试」。...以上就是如何Laravel 中使用单元测试使用方法。 功能测试 这一节我们将学习如何创建功能测试用例来对先前创建控制器进行「功能测试」。

5.7K10
  • 通过 PHP 代码发送 HTTP 响应与文件下载

    耳听为虚,眼见为实,下面学院君结合常见使用场景来演示如何在 PHP 中设置 HTTP 响应并发送给客户端。...除了 200 之外,还有很多其他响应状态码,比如 301、403、404、500 等,分别表征不同含义,比如 301 表示永久重定向、403 表示没有权限、404 表示资源不存在、500 表示服务器错误...比如说,我们设置一个 404 响应如下: ? ? 对应响应状态行字符串格式需要和 HTTP 协议规范保持一致。...合理使用响应状态码可以对响应状态进行准确描述,尤其是在 API 接口设计时,调用者根据响应状态码就可以大致得知错误原因。...5、JSON 响应 关于 Web 页面的响应实体输出(主要是 HTML 文档,或者一些调试信息输出,包括文本字符串、数组等),已经都看到过相关演示实例了,这里我们介绍两种其他响应输出格式,首先来看

    4.6K20

    laravel 框架配置404等异常页面

    laravelHandler类文件位置:app/Exceptions/Handler,由于render方法时间异常渲染到http响应中,所以我们只需要修改下render方法即可 网上很多方法是将render...,但是如果你如果写了登录方法的话,这时候如果你访问必须要登录页面的时候,这时候会报错 ?...这是由于如果你访问了必须要登录页面的时候,这时候就会进入app/Exceptions/Handler.phprender方法,这时候$exception- getStatusCode()是不存在,...这时候就会报错了,那么如何解决呢?...,错误页面的命名为:{errorcode}..balde.php,其中errorcode为错误码,例如404..balde.php 配置完成后访问一个不存在路由时即可跳转到你配置404页面 以上就是本文全部内容

    1.3K21

    Laravel 5.0 之自定义错误页面

    本文译自 Matt Stauffer 系列文章. ---- 在以往版本 Laravel 中,假如你想自定义错误页面——比如当用户访问不存在页面时显示一张猫 GIF 动画图片——你可能会通过 Google...在 Laravel 5 中,这个问题得到了改进。...>>直达解决方案 源代码解析 在新版本 Laravel 中,所以处理自定义错误和异常代码都移到了 app/Exceptions/Handler.php 里。...{httpStatusCode} 视图,它就会直接显示该视图(并且传入一些必要信息)。 如何实现自定义 # 根据前文分析,如果我们创建了一个名为 "errors....比如你想自定义 404 错误页面的话,只要创建一个 resources/views/errors/404.blade.php 视图文件,就可以了!

    1.4K50

    通过 Laravel 创建一个 Vue 单页面应用(五)

    使用服务端 Laravel 应用,我们可以很容易地从 ModelNotFoundException 渲染一个 404.blade.php 。不过SPA有些不同。... 因为在后端Laravel程序中存在一个万能路由, 这意味着前端也需要这么一个万能路由,当访问路径与已经定义路由不匹配时以一个404页面作为响应。...$router.push({ name: '404' }); }); } 现在,如果您直接向 /users/2000/edit 这样 URI 发出请求,你应该会看到应用重定向到404页面,而不是挂在...$router 属性编程导航。 接下来,我们将转向构建用户创建,以总结如何执行基本创建、读取、更新和删除(CURD)操作。...准备好后,请查看第6部分-创建新用户 原文地址:https://laravel-news.com/building-a-vue-spa-with-laravel-part-5 译文地址:https://

    4.4K20

    Laravel 5.5 异常处理 & 错误日志解决

    如果在生产环境被设置为 true,就有可能将一些敏感信息暴露给终端用户。 日志存储 Laravel 支持日志文件类型为 single, daily, syslog 和 errorlog。...日志文件最大生命周期 使用 daily 日志模式时候,Laravel 默认最多为我们保留最近 5日志,如果你想要修改这个时间,需要添加一个配置 log_max_files 到 app 配置文件:...属性包含一个不会被记录异常类型数组,默认情况下,404 错误异常不会被写到日志文件,如果需要的话你可以添加其他异常类型到这个数组: /** * 不应该被报告异常类型列表...HTTP 错误码,例如,这可能是一个“页面未找到”错误(404),“认证失败错误”(401)亦或是程序出错造成500错误,为了在应用中生成这样响应,可以使用 abort 辅助函数: abort(404...自定义 HTTP 错误页面Laravel 中,返回不同 HTTP 状态码错误页面很简单,例如,如果你想要自定义 404 错误页面创建一个 resources/views/errors/404.

    4.4K31

    如何在Ubuntu 14.04上使用Ansible部署基本PHP应用程序

    一个将用于AnsibleUbuntu 14.04 腾讯CVM。这也是您将在本教程整个过程中登录腾讯CVM。...ansible php -m ping 您可能会遇到一个SSH主机身份验证检查,具体取决于您之前是否曾登录过该主机。...在我们添加apt模块以安装我们想要软件包之前,我们需要创建一个基本playbook。在学习本教程时,我们将以此手册为基础。创建一个名为php.yml新剧本。...如果您现在在Web浏览器中访问腾讯CVM(即 http://your_server_ip/),您将看到Nginx默认页面而不是Laravel新项目页面。...您现在应该看到Laravel新项目页面! 结论 本教程介绍如何使用公共存储库部署PHP应用程序。虽然它非常适合学习Ansible如何工作,但您并不总是使用开放存储库来处理完全开源项目。

    5.9K00

    PHP面试题集锦

    四种标量类型:boolean(布尔型)、integer(整型)、float(浮点型,也称作double)、string(字符串) 两种复合类型:array(数组)、object(对象) 两种特殊类型:resource...另一种采用分布式,可以在网站根目录上创建.htaccess文件,在里面配置相应重写规则来实现伪静态,这种每次重写时不需要重启web服务器,且结构上比较清晰。 如何预防CSRF攻击?...按照目的分,目前常见设计模式主要有23种,根据使用目标的不同可以分为以下三大类: (1)创建设计模式(Creational Patterns)(5种):用于创建对象时设计模式。...) (12)获取文件类型  filetype() (13)获取文件详细信息 state() (14)判断是否是目录 is_dir() 如何在命令下运行php脚本(写出两种方式),如何向php脚本传递参数...单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户一次登录能得到其他所有系统信任。 什么是CSRF攻击?

    6.9K20

    Laravel系列7.4】安全相关

    其实挺费劲,如果是正式公司团队开发的话,前端小哥哥小姐姐们才不会来你 Laravel 框架中进行编译或者写代码呢。所以这个功能更适合是我们自己一个人承担一整套后台页面开发情况。...不过这些内容不在我们今天讨论范围内,我们只是看一下默认情况下 Laravel 自带认证是如何使用。...$this->guards[$name] = $this->resolve($name); } 在创建驱动时,会根据我们在 config/auth.php 中配置,调用指定驱动,比如 web 调用是...这也是我们使用 api 方式可以用两种方式传递 token 原因。最后,通过获得 token 调用 UserProvider 服务提供者获得用户信息完成登录认证判断。...总结 今天内容主要是探讨了一下 Laravel 框架中自带认证功能和加密相关内容。其实更多情况下,我们会自己去做 api 形式接口或者自己去写登录页面和验证逻辑。

    3.6K40

    基于 Go 语言开发在线论坛(六):日志和错误处理

    0、引言 到现在为止,我们已经完成了在线论坛项目基本功能开发,相信你已经对 Go 语言 Web 编程中如何实现 MVC 架构模式以及 CRUD(数据库增删改查)基本操作有了初步认识。...,比如浏览群组详情页,对应群组不存在,这个时候,我们就应该直接返回 404 响应或者将用户重定向到 404 页面,而不能继续往后执行,对于这种错误,只能通过单独处理逻辑进行处理,这种错误类似于 Laravel...重定向到错误页面 在这个项目中,我们通过重定向到错误页面的方式处理这种类型错误,在 handlers/helper.go 中新增 error_message 函数: // 异常处理统一重定向到错误页面...,接下来,可以进行简单测试,重启 HTTP 服务器,访问应用首页,此时会引入 helper.go,执行 init 方法,创建日志文件,我们试图使用错误用户名密码登录: ?...id=100,页面就会重定向到错误页面: ? 关于日志和错误处理,我们就简单介绍到这里,下篇教程,学院君将给大家演示如何通过配置文件对敏感信息和可变信息进行配置,然后从配置文件读取这些信息。

    91020

    Laravel系列7.2】错误与异常处理

    渲染异常 产生了异常之后,我们肯定要有一个显示异常响应返回回来。对于 Laravel 来说,默认情况下根据不同 APP_DEBUG 配置,就可以得到上面两个截图中不同响应返回页面。...这个页面非常简单,直接在 resources/views/errors 目录下创建了一个 custom.blade.php 模板文件。 <!...另外,自定义错误页面也是一个网站吸引人地方,比如说很多网站 404 页面就设计很有意思,在这里,也是可以通过 renderable() 来实现个性化错误页面展示。...现在主要疑问是在于 Laravel 框架中是如何去捕获这些全局异常和错误信息,是使用我们熟悉 set_error_handler()、set_exception_handler() 这些函数吗?...带着这个问题,我们就来剖析一下 Laravel 源码是如何处理这些情况

    2.8K20

    Laravel 广播系统工作原理

    我们示例项目将实现一个仅支持登录用户才能收到即时信息消息系统,所以将使用 「 private(私有)」 类型频道。...开箱即用认证服务 首先对于新创建 Laravel 项目,我们需要安装 Laravel 提供开箱即用认证服务组件,默认认证服务功能包括:注册、登录等功能。...执行事件时,我们首先需要做创建一个事件类,Laravel 将基于不同事件类型执行不同操作。...之前我们已经在前端代码中完成频道订阅和监听处理,这里当用户收到消息时会在页面弹出一个消息框提示给用户。 现在如何对以上功能进行测试呢?...在浏览器访问地址 http://your-laravel-site-domain/message/index 。如果您未登录系统,请先进行登录处理,登录后就可以看到广播页面信息了。

    9.2K20

    路由使用进阶(二)

    {task})来告知路由解析器需要从 Eloquent 记录中根据给定资源 ID 去查询模型实例,并将查询结果作为参数传入而不是资源 ID。...有两种方式来实现路由模型绑定:隐式绑定和显式绑定。...由于路由参数({task})和方法参数(task)一样,并且我们约定了 task 类型为 \App\Models\Task,Laravel 就会判定这是一个路由模型绑定,每次访问这个路由时,应用会将传入参数值赋值给...所谓兜底路由,就是当路由文件中定义所有路由都无法匹配用户请求 URL 时,用来处理用户请求路由,在此之前,Laravel 都会通过异常处理器为这种请求返回 404 响应,使用兜底路由好处是我们可以对这类请求进行统计并进行一些自定义操作...所谓频率限制,指的是在指定时间单个用户对某个路由访问次数限制,该功能有两个使用场景,一个是在某些需要验证/认证页面限制用户失败尝试次数,提高系统安全性,另一个是避免非正常用户(比如爬虫)对路由过度频繁访问

    8.5K40
    领券