如果有其他情况,请查看路线laravel

如果有其他情况,请查看路线laravel,laravel,Laravel,我希望只有与url id同名的用户才能使用if条件访问 范例 名为jer的用户登录 他只能使用/User Profile/jer访问url 并且不访问与他不相同的其他页面/用户配置文件/abc 名字 做一些类似于示例的事情: if{id}!=={{auth->name}} { Route::get('NoPermission', 'Restriction@index'); } else { Route::get('/User-Profile/{name}/', 'Ac

我希望只有与url id同名的用户才能使用if条件访问

范例

  • 名为jer的用户登录

  • 他只能使用/User Profile/jer访问url

  • 并且不访问与他不相同的其他页面/用户配置文件/abc 名字

做一些类似于示例的事情:

 if{id}!=={{auth->name}}
 {
  Route::get('NoPermission', 'Restriction@index');
 }
 else
 {
  Route::get('/User-Profile/{name}/', 'AccountController@index');
 }
如何将url中的
{name}
{auth->name}
进行比较

路线

刀片



允许访问页面,但在显示内容之前,请检查url路径是否为==到id名称。

允许访问页面,但在显示内容之前,请检查url路径是否为==到id名称。

如果无法访问路由中的身份验证,请在AccountController中进行比较:

public function index($name){
    if($name != Auth::user->name()) abort(403);
    else...
}

您无法在路由中访问这样的身份验证,请改为在AccountController中进行比较:

public function index($name){
    if($name != Auth::user->name()) abort(403);
    else...
}
在服务提供者中(哪一个并不重要,但如果在RouteServiceProvider中完成,则会更清楚),在引导方法中添加路由绑定,如中所述

公共函数启动()
{
//声明绑定“name”。
路由::绑定('name',函数($name){
返回App\User::where('name',$name)->first()??中止(404);
});
}
然后,在路由文件中使用该绑定

//使用绑定名称和中间件身份验证来确保来宾用户无法访问此路由。
路由::get('/User Profile/{name}/','AccountController@index')->中间件('auth')->名称('account_profile');
在刀片文件中,可以执行以下操作

{{--确保链接仅对经过身份验证的用户可见https://laravel.com/docs/6.x/blade#if-语句--}}
@认证
@endauth
在服务提供者中(哪一个并不重要,但如果在RouteServiceProvider中执行,则会更清楚),在引导方法中添加路由绑定,如中所述

公共函数启动()
{
//声明绑定“name”。
路由::绑定('name',函数($name){
返回App\User::where('name',$name)->first()??中止(404);
});
}
然后,在路由文件中使用该绑定

//使用绑定名称和中间件身份验证来确保来宾用户无法访问此路由。
路由::get('/User Profile/{name}/','AccountController@index')->中间件('auth')->名称('account_profile');
在刀片文件中,可以执行以下操作

{{--确保链接仅对经过身份验证的用户可见https://laravel.com/docs/6.x/blade#if-语句--}}
@认证
@endauth

实际上,您可以像这样登记您的路线:

Route::get('/profile/{name}', function(String $name) {
    if (!Auth::check() || $name !== Auth::user()->name) {
        abort(404);
    }
    return view("view.auth.profile", ['profile => App\Profile::where('user_id', '=', Auth::id())->first()]);
});
但是如果你使用

Route::get('/profile','AuthController@profile')->中间件('auth')

并在控制器中使用
Auth::user()
选择正确的配置文件


这里的好处是,任何未经身份验证的用户都将自动重定向到您的登录页面,而无需在您的个人资料链接中包含姓名。

实际上,您可以像这样签入您的路线:

Route::get('/profile/{name}', function(String $name) {
    if (!Auth::check() || $name !== Auth::user()->name) {
        abort(404);
    }
    return view("view.auth.profile", ['profile => App\Profile::where('user_id', '=', Auth::id())->first()]);
});
但是如果你使用

Route::get('/profile','AuthController@profile')->中间件('auth')

并在控制器中使用
Auth::user()
选择正确的配置文件

这样做的好处是,任何未经身份验证的用户都将自动重定向到您的登录页面,而无需在您的个人资料链接中包含姓名