首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果其他条件在航线上的话

如果其他条件在航线上的话
EN

Stack Overflow用户
提问于 2019-11-29 14:56:52
回答 4查看 3.4K关注 0票数 1

我希望只有同名和url id相同的用户才能使用(条件)访问。

示例

使用名称jer

  • 登录的
  • 用户他只应该使用访问url,而不应该访问与他的名字不相等的其他页面/用户配置文件/abc。

做类似的事情,例如:

代码语言:javascript
复制
 if{id}!=={{auth->name}}
 {
  Route::get('NoPermission', 'Restriction@index');
 }
 else
 {
  Route::get('/User-Profile/{name}/', 'AccountController@index');
 }

我如何比较{name}从url到{auth->name}

路由

代码语言:javascript
复制
 Route::get('/User-Profile/{name}/', 'AccountController@index');

叶片

代码语言:javascript
复制
 <a href="/dashboard/User-Profile/{{ Auth::user()->name }}">{{ Auth::user()->name 
}}</a>
EN

回答 4

Stack Overflow用户

发布于 2019-11-29 15:02:45

您不能在您的路径中这样访问Auth,而是在您的AccountController中比较它:

代码语言:javascript
复制
public function index($name){
    if($name != Auth::user->name()) abort(403);
    else...
}
票数 4
EN

Stack Overflow用户

发布于 2019-11-29 15:47:03

在服务提供者中(哪个服务提供者并不重要,但如果在RouteServiceProvider中完成,则会更清楚),在引导方法中添加一个路由绑定,如https://laravel.com/docs/6.x/routing#explicit-binding中所记录的那样

代码语言:javascript
复制
public function boot()
{
    // Declare binding 'name'. 
    Route::bind('name', function ($name) { 
        return App\User::where('name', $name)->first() ?? abort(404);
    });
}

然后,在您的路由文件中使用绑定。

代码语言:javascript
复制
// 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');

在刀片文件中,可以执行以下操作

代码语言:javascript
复制
{{-- 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
票数 2
EN

Stack Overflow用户

发布于 2019-11-29 15:02:13

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59107032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档