gpt4 book ai didi

php - 是否建议在同一个请求类中编写插入/更新/删除授权代码?

转载 作者:可可西里 更新时间:2023-10-31 22:41:14 24 4
gpt4 key购买 nike

我正在请求类中编写以下代码以进行验证和授权。所以下面的代码用于添加/更新记录。

<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;

class UserRequest extends Request
{
public function authorize()
{
return \Auth::user()->isAdmin();
}

public function rules()
{
return [
'UserName' => 'required|max:50|min:3|unique:tbluser,UserName,' .
\Request::get( 'UserID' ) . ',UserID',
];
}
}

我的问题是:我是否应该编写代码来检查当前用户是否有权删除记录。为此,我应该使用用于添加/更新的相同请求类还是专门用于删除身份验证的另一个类?如果我使用相同的类,那么 rules() 将被执行,这意味着添加/更新

最佳答案

我会做的是:

<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;

class UserRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{

switch ($this->method()) {

// Show single record or multiple records
case 'GET':
default:
return true;
break;

// Change a record
case 'POST':
case 'PUT':
case 'PATCH':
case 'DELETE':
if(\Auth::user()->isAdmin()) {
return true;
}
return false;
break;
}
}

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
switch ($this->method()) {
case 'GET':
case 'DELETE':
return [];
break;

case 'POST':
return [
'UserName' => 'required|max:50|min:3|unique:tbluser,UserName'
];
break;
case 'PUT':
case 'PATCH':

return [
'UserName' => 'required|max:50|min:3|unique:tbluser,UserName,' .
\Request::get( 'UserID' ) . ',UserID',
];
break;
default:
break;
}
}
}

对您的代码所做的更改是,在一个请求文件中,您可以制定规则并根据使用的方法类型更改授权。默认和获取(显示用户或索引或类似的东西)不需要权限。对于所有其他方法(更改记录),用户必须是管理员。

关于php - 是否建议在同一个请求类中编写插入/更新/删除授权代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36035079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com