优化 authorize 页面

文档中用授权策略来进行权限的验证,会返回一个报错的页面,这样的对用户来说不是那么友好。
so , show my code
UserController.php:
记得引入AuthorizationException

public function edit(User $user)
{
        try {
            $this->authorize('update', $user);
        }catch (AuthorizationException $e){
            $result = '无权限';
            return view("common.403", compact('result'));
        }
        return view('users.edit', compact('user'));
}

403.blade.php

@extends('layouts.app')
@section('title', '403')

@section('content')
    <div style="text-align: center  ">
        <h1>403 </h1>
        <h2>{{$result}}</h2>
        <a style='text-align: center' href="{{url()->previous()}}">返回上一页</a>
    </div>
@stop

优化的页面相对来说比较简单,大家有什么好的建议也可以在下面留言哈

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 13

事实上5.5已经准备好了一切,并不需要 try{} catch{} 只需要在 /resources/views/errors/ 下准备好对应错误代码的视图即可,如果是 403 错误,写一个 /resources/views/errors/403.blade.php 视图就可以自定义报错页面的渲染。
而在实际的生产环境中, APP_DEBUG 应处于 false 的状态, 框架已经准备好了适用于生产环境的报错页,这个不友好的页面并不会出现。

5年前 评论

应该是show my code

还有,,,你应该吧403.blade.php放到views/errors文件夹下,报错403,会自动渲染403.blade.php
404和500同理,,,

5年前 评论

好像不起作用

5年前 评论

@LL

file

try不起作用,没有走进edit控制器。

file

报错依旧。

5年前 评论

@Angle 忘记引入了。。。AuthorizationException

5年前 评论

@LL 我在你挖的坑中挣扎。 把这个文章写完整吧,方便其他人使用这个好方法。

5年前 评论

测试楼主的代码,try catch 模块不知为何不起作用,即便是用的AuthorizationException。
后来采取的美化方式是:

  1. 不改动教程的任何代码;
  2. 建立模板文件:\resources\views\errors\403.blade.php,内容随意。
    这样在报错时会直接跳转入上面的403文件。
5年前 评论

@discus2013 抛出其他异常也没捕获吗?

5年前 评论

事实上5.5已经准备好了一切,并不需要 try{} catch{} 只需要在 /resources/views/errors/ 下准备好对应错误代码的视图即可,如果是 403 错误,写一个 /resources/views/errors/403.blade.php 视图就可以自定义报错页面的渲染。
而在实际的生产环境中, APP_DEBUG 应处于 false 的状态, 框架已经准备好了适用于生产环境的报错页,这个不友好的页面并不会出现。

5年前 评论

上面几个哥们为什么没有跳出对应的页面的原因在于,APP_DEBUG是true状态,也就是页面不是开启debug状态,创建环境的时候系统默认是线上环境,而不是测试环境,只需要去对应.ENV或者config文件夹下的config.php就改配置就好

5年前 评论
chenBJ

@Angle 问一下这个解决了吗 授权我想给用户展示错误码但是try {
$this->authorize('edit', $user);
}catch (AuthorizationException $e){
$result = '无权限';
return view("common.403", compact('result'));
}这么写确实没走

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!