【问题标题】:Route protection Laravel 5.1路由保护 Laravel 5.1
【发布时间】:2023-03-28 00:25:01
【问题描述】:

我正在构建一个包含多个用户的客户端列表的应用。每个用户都应该只能访问他们的客户列表。 (下一步是为用户添加允许其他用户访问其客户列表的能力)。

我已将应用设置为使用内置中间件保护列表。 URL /clients 仅显示经过身份验证的用户列表。但是,我不知道如何保护客户的详细信息。

我的用户模型在客户端上设置了 hasMany,客户端在用户上设置了 belongsTo。

如何保护诸如 /clients/5 之类的 URL,其中 5 是我的数据库中的客户端 ID,并且 URL 显示了客户端详细信息?目前,任何经过身份验证的用户都可以键入带有客户端 ID 的 url,并查看该客户端详细信息。如果需要,我可以发布代码。但是,我只是希望自己找到正确的方向。

编辑 - 附加信息/代码

这是来自 ClientsController.php 的显示函数。注释掉的位是解决此处发布的问题的失败尝试。

  public function show($id)
{
    //$client = \Auth::user()->clients()->get($id);
    $client = Client::findOrFail($id);
    return view('clients.show', compact('client'));
}

还有,我的客户模型

 namespace App;

 use Illuminate\Database\Eloquent\Model;

 class Client extends Model
 {
   protected $fillable = [
    'bizName',
    'bizStreet',
    'bizCity',
    'bizZip',
    'bizEmail',
    'bizPhone',
    'bizNotes',
    'user_id'
];

/**
 * A client belongs to one user
 * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
 */
public function user()
{
    return $this->belongsTo('App\User');
}

}

【问题讨论】:

  • 请您用ClientController@show 的内容或/clients/{clients} 路由的控制器更新您的问题?甚至可以插入您的 Clients 模型。

标签: laravel-5 laravel-5.1


【解决方案1】:

对于初学者,您可以在中间件中使用类似的东西:

public function handle($request, Closure $next)
{
    if(($request->id != $request->user()->id) and ($request->user()->is_admin != true))
    {
        exit('Nice try!');
    } 

    return $next($request);
}

您可能还喜欢以下内容:https://github.com/jenssegers/optimus

【讨论】:

  • 我不确定如何从请求视图传递登录用户 ID。你能指导我吗?
  • $request->user()是你的登录用户,$request->id是你的路由参数,比如{id}
【解决方案2】:

感谢所有提供帮助的人。

我无法让中间件工作。因此,我将控制器中的 show 方法更改为使用 if 语句作为过滤器。

这是我的工作展示方法:

 public function show($id)
  {
    $client = Client::findOrFail($id);
    if ($client->user_id != \Auth::id())
    {
        return view('welcome');
        //TODO create unauthorized view
    }
    return view('clients.show', compact('client'));
  }

【讨论】:

    猜你喜欢
    • 2016-02-11
    • 2019-09-13
    • 2015-03-11
    • 1970-01-01
    • 2016-01-08
    • 2018-06-28
    • 2017-02-11
    • 2016-04-15
    • 1970-01-01
    相关资源
    最近更新 更多