php – Laravel中Request类中authorize方法的目的是什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Laravel中Request类中authorize方法的目的是什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2069字,纯文字阅读大概需要3分钟。
内容图文
我今天对我的网站安全性以及为使网站安全而编写的一些额外代码感到有些困惑.以下是2个应用安全性的位置.
在路由配置中,为了保护路由,我使用了中间件来检查用户角色.
Route::group(['middleware' => ['web', 'SuperAdmin', 'auth']], function () {
Route::get('/Create-Department', 'DepartmentController@CreateDepartment');
});
我提到了2个中间件.
Auth Middleware
: This is forauthentication
.SuperAdmin Middleware
: This is forAuthorization
.
第二个位置是请求类.这是代码.在授权方法中,再次检查同样的事情,就像在路线中已经完成的那样
class DepartmentRequest extends Request
{
public function authorize()
{
if(\Auth::user() == null) {
return false;
}
if(\Auth::user()->isSuperAdmin()) {
return true;
}
return false;
}
public function rules()
{
return [
'Department' => 'required',
];
}
}
问题:我应该删除Check in Request类吗?这是一个不需要的验证来保护请求吗?由于route.config已经在完成这项工作.
授权方法有什么用?我的意思是,我使用Request类来验证表单输入.我应该总是从授权方法返回true吗?
解决方法:
是的,您应该删除Request类中的检查:如果您已经在中间件中进行了检查,则不应重复这些检查
当你指定这个:
Route::group(['middleware' => ['web', 'SuperAdmin']], function () {
Route::get('/Create-Department', 'DepartmentController@CreateDepartment');
});
你告诉laravel,当它找到/ Create-Department路由时,它应该在请求被发送到DepartmentController之前触发这些中间件的句柄方法:[‘web’,’SuperAdmin’]
因此,如果您检查中间件中的身份验证和授权,当请求到达您的控制器时,您确定它已满足它经历的所有中间件
关于授权方法的目的:授权方法通常用于根据您要尊重的某些策略授权实际请求.例如,如果您有编辑Post模型的请求,则在authorize方法中,您将检查尝试编辑帖子的特定用户是否具有执行此操作的权限(例如,作为帖子的作者)
编辑
即使您想使用中间件进行授权,也没关系.无论如何,通常表单请求中的授权方法用于对特定请求进行授权检查.
例如,从docs检查此示例:
public function authorize()
{
$postId = $this->route('post');
//here the authorization to edit the post is checked through the Gate facade
return Gate::allows('update', Post::findOrFail($postId));
}
总之:如果您在中间件中执行身份验证和授权任务,则无需在授权方法中重复这些任务,但请记住,该方法的本机用途是授权特定请求
内容总结
以上是互联网集市为您收集整理的php – Laravel中Request类中authorize方法的目的是什么?全部内容,希望文章能够帮你解决php – Laravel中Request类中authorize方法的目的是什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。