如何在 URL laravel 中加密 id

我想加密 URL 中的 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>


阿晨1998
浏览 180回答 2
2回答

扬帆大鱼

把它放在你的表单动作标签中<form action="/tender/update/{{Crypt::encrypt('id')}}" class="form-horizontal" id="bid-update" method="POST">&nbsp; &nbsp; {{ csrf_field() }}&nbsp; &nbsp; @method('POST')&nbsp; &nbsp; @include ('tender.form', ['formMode' => 'edit'])</form>并替换控制器的这一行:$tender = TenderMaster::findOrFail($id);有了这个:$tender = TenderMaster::findOrFail(Crypt::decrypt($id));并且不要忘记在您的控制器中添加上面的这一行use Illuminate\Support\Facades\Crypt;希望它会工作

蛊毒传说

使用 laravel 内置加密来实现这一点:在前端添加路由时,使用加密助手加密 id,如下所示:{{route('bid.update', encrypt($id))}}现在,在您的控制器中,解密您传递的 id。public function update($id, Request $request){&nbsp; &nbsp; $ID = decrypt($id);&nbsp; &nbsp; $tender = TenderMaster::findOrFail($ID);&nbsp; &nbsp; ..&nbsp; &nbsp; ...}我希望你明白。
打开App,查看更多内容
随时随地看视频慕课网APP