作者:尊园2010_630 | 来源:互联网 | 2023-09-15 19:00
我想对我的id进行加密,以显示我的控制器代码和路由(我已经在控制器中使用了Crypt :: encrypt($ id);但它不能正常工作,所以我在控制器中碰到了这条线
这是我的控制器
public function update(TenderRequest $request,$id)
{
$tender = TenderMaster::findOrFail($id);
//Crypt::encrypt($id);
if($request->extend_date <$request->end_date || $request->bid_status > 0){
return 'unsuccess';
}else{
$transaction = DB::transaction(function () use($request,$tender,$id) {
$tender->extend_date = $request->extend_date;
$tender->remarks = $request->remarks;
$tender->update($request->all());
});
return 'BID '.$tender->ref_no.' Succesfully Updated';
}
这是我的路线
Route::post('tender/update/{id}','Tender\TenderMasterController@update')->name('bid.update');
这是我的刀刃
{{ csrf_field() }}
@method('POST')
@include ('tender.form',['formMode' => 'edit'])
使用laravel内置加密来实现此目的:
在前端添加路由时,请使用以下加密助手对ID进行加密:
{{route('bid.update',encrypt($id))}}
现在,在您的控制器中,解密您传递的ID。
public function update($id,Request $request){
$ID = decrypt($id);
$tender = TenderMaster::findOrFail($ID);
..
...
}
希望您能理解
这是文档:
https://laravel.com/docs/6.x/helpers#method-encrypt
https://laravel.com/docs/6.x/helpers#method-decrypt
,
将其放在您的表单操作标签中
{{ csrf_field() }}
@method('POST')
@include ('tender.form',['formMode' => 'edit'])
并替换控制器的这一行:
$tender = TenderMaster::findOrFail($id);
与此:
$tender = TenderMaster::findOrFail(Crypt::decrypt($id));
别忘了在控制器中添加此行
use Illuminate\Support\Facades\Crypt;
希望它能工作
,
有加密和解密功能
但是,我想不同意加密用户ID的想法,这远非最佳实践
我建议您使用政策policy guide