繁体   English   中英

如何在URL Laravel中加密ID

[英]How to encrypt id in URL laravel

我想对我的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');

使用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

将其放在表单操作标签中

<form action="tender/update/{{Crypt::encryptString('id')}}">

并替换控制器的这一行:

$tender = TenderMaster::findOrFail($id);

有了这个:

$tender = TenderMaster::findOrFail(Crypt::decryptString($id));

并且不要忘记在控制器中添加此行

use Illuminate\Support\Facades\Crypt;

希望它会起作用

有加密和解密功能

但是,我想不同意加密用户ID的想法,这远非最佳实践

我想建议您使用政策, 政策指南

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM