我希望只有同名和url id相同的用户才能使用(条件)访问。
示例
使用名称jer
做类似的事情,例如:
if{id}!=={{auth->name}}
{
Route::get('NoPermission', 'Restriction@index');
}
else
{
Route::get('/User-Profile/{name}/', 'AccountController@index');
}我如何比较{name}从url到{auth->name}?
路由
Route::get('/User-Profile/{name}/', 'AccountController@index');叶片
<a href="/dashboard/User-Profile/{{ Auth::user()->name }}">{{ Auth::user()->name
}}</a>发布于 2019-11-29 15:02:45
您不能在您的路径中这样访问Auth,而是在您的AccountController中比较它:
public function index($name){
if($name != Auth::user->name()) abort(403);
else...
}发布于 2019-11-29 15:47:03
在服务提供者中(哪个服务提供者并不重要,但如果在RouteServiceProvider中完成,则会更清楚),在引导方法中添加一个路由绑定,如https://laravel.com/docs/6.x/routing#explicit-binding中所记录的那样
public function boot()
{
// Declare binding 'name'.
Route::bind('name', function ($name) {
return App\User::where('name', $name)->first() ?? abort(404);
});
}然后,在您的路由文件中使用绑定。
// Use binding name and middleware auth to make sure this route can't be accessed by guest users.
Route::get('/User-Profile/{name}/', 'AccountController@index')->middleware('auth')->name('account_profile');在刀片文件中,可以执行以下操作
{{-- Make sure the link is only visible for authenticated users https://laravel.com/docs/6.x/blade#if-statements --}}
@auth
<a href="{{ route('account_profile', ['name' => auth()->user()->name]) }}</a>
@endauth发布于 2019-11-29 15:02:13
允许访问页面,但在显示内容之前,请检查url路径是否为id名称的==。
https://stackoverflow.com/questions/59107032
复制相似问题