如何在URL Laravel中加密ID

时间:2019-11-28 04:34:56

标签: php laravel encryption

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

这是我的刀刃

<form action="{{route('bid.update' ,Crypt::encrypt('id'))}}" class="form-horizontal" id="bid-update" method="POST">
                                    {{ csrf_field() }}
                                    @method('POST')
                                    @include ('tender.form', ['formMode' => 'edit'])
                                    </form>

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

将其放在您的表单操作标签中

<form action="/tender/update/{{Crypt::encrypt('id')}}" class="form-horizontal" id="bid-update" method="POST">
    {{ csrf_field() }}
    @method('POST')
    @include ('tender.form', ['formMode' => 'edit'])
</form>

并替换控制器的这一行:

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

与此:

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

别忘了在控制器中添加此行

use Illuminate\Support\Facades\Crypt;

希望它能工作

答案 2 :(得分:0)

有加密和解密功能

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

我建议您使用政策policy guide