权限系统

本教程最新版为 9.x,当前版本已放弃维护,请阅读最新版本!

权限系统

现在的应用存在两个巨大的安全隐患:

  1. 未登录用户可以访问 editupdate 动作;
  2. 登录用户可以更新其它用户的个人信息;

接下来让我们针对这两个安全隐患进行修复。

必须先登录

Laravel 中间件 (Middleware) 为我们提供了一种非常棒的过滤机制来过滤进入应用的 HTTP 请求,例如,当我们使用 Auth 中间件来验证用户的身份时,如果用户未通过身份验证,则 Auth 中间件会把用户重定向到登录页面。如果用户通过了身份验证,则 Auth 中间件会通过此请求并接着往下执行。Laravel 框架默认为我们内置了一些中间件,例如身份验证、CSRF 保护等。所有的中间件文件都被放在项目的 app/Http/Middleware 文件夹中。

接下来让我们使用 Laravel 提供身份验证(Auth)中间件来过滤未登录用户的 edit, update 动作。

app/Http/Controllers/UsersController.php

<?php

namespace App\Http\Controllers;
.
.
.
cla...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 61

赖皮小鳄鱼
如何使用 authorize 用户未通过授权如何友好提示?
7 个点赞 | 16 个回复 | 问答 | 课程版本 5.5
sphard
403 页面中文翻译文件报错了
3 个点赞 | 4 个回复 | 问答 | 课程版本 5.7
Mr_Guo
菜鸟请教一条 sql 急急急 谢谢各位大佬了?
2 个点赞 | 15 个回复 | 问答 | 课程版本 5.5
Moonshadow2333
8.0版本 报错未定义\Gate::guessPolicyNamesUsing()
1 个点赞 | 12 个回复 | 问答 | 课程版本 8.x
logic
中间件的用法?
1 个点赞 | 6 个回复 | 问答 | 课程版本 5.5
XiangyangZhu
怎么判断当前是不是管理员?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
qietugou
$this->authorize 产生的异常怎么捕获不到?
1 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
shwfz01a
增加权限代码后无法退出?
0 个点赞 | 11 个回复 | 问答 | 课程版本 5.5
mfsslgs
关于页面 HTML 代码的问题?
0 个点赞 | 7 个回复 | 问答 | 课程版本 5.5
Alexander-
Trying to get property 'headers' of non-object
0 个点赞 | 4 个回复 | 问答 | 课程版本 6.x
happyplay008
当前用户没有修改自己信息的权限?
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
happyplay008
middleware 为什么 show 也要 except?
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
yangyang2018
怎么我跟着教程做,也报这个错误的?
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
XiangyangZhu
当前用户没有修改自己信息的权限?
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
Cockroack必死
跟着教程做,授权决策这里卡了?编辑当前用户也不行!
0 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
zhongjidalao
不能进入注册页面,点击会跳转到登陆界面?
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
xinjiahui
登录用户 1,访问用户 2 的编辑页面,还是会有报错?
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
cxgang
$this->authorize ('update', $user);为啥不写在 update 方法的第一行?
0 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
holyLight
进入 tinker 时提示 “找不到 registerPolicies ()”
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.8
phpervip
PHP artisan make:policy UserPolicy 已解决
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.8
smalltide
update (User $currentUser, User $user) 問題
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
jiangpanyue
退出頁面報錯
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
sept-me
请问对 Auth 中间件的 only 跟 except 的理解对吗?
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.5
qingshui
intended () 重新定向问题
0 个点赞 | 1 个回复 | 问答 | 课程版本 6.x
cyan
请问 Auth 中间件与 Auth::logout () 中的 Auth 有什么联系吗?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.8
huanwuxusheng
中间件检测
0 个点赞 | 1 个回复 | 分享 | 课程版本 5.8
Yuan_
无需登录,通过改写 url 即可进入用户 show 页面???
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.7
Narcissus
wongvio
如果我用 Auth 判断用户是不是自己本身,会有什么问题??
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
wongvio
为什么要 'except' => ['show', 'create', 'store'] 呢?[已解决]
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
lanmingzi
为什么 RedirectIfAuthenticated 里面不能用 return redirect ('home');?
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
Hpeng
xll123
Gate::guessPolicyNamesUsing()原理
0 个点赞 | 0 个回复 | 分享 | 课程版本 8.x
kakaxi
为什么输入密码登录的时候,也会提示 “无需再次操作”
0 个点赞 | 0 个回复 | 问答 | 课程版本 7.x
qymsw
SessionsController中间件'guest'跟UsersController一样
0 个点赞 | 0 个回复 | 问答 | 课程版本 6.x
渔郎
edit () 方法中添加了 $this->authorize ('update', $user); 后报错
0 个点赞 | 0 个回复 | 分享 | 课程版本 6.x
zhaohongrui
登录用户点击编辑资料打不开报错 403
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.8
poison
Auth 未登录用户 403
0 个点赞 | 0 个回复 | 问答 | 课程版本 5.7