【问题标题】:Laravel how to block or secure id in routeLaravel如何阻止或保护路由中的ID
【发布时间】:2018-07-03 09:24:23
【问题描述】:

我在我的项目中有自定义密码重置,用户可以更改他的密码,现在我如何保护用户无法操作 id 的路由..laravel 是否在中间件中有它?

示例:http://localhost:8000/changepassword/1/edit 如果用户尝试更改 id 参数,它将重定向到访问被拒绝的页面。这可能吗?

【问题讨论】:

  • 可以,您可以检查登录用户 ID 和从 URL 获取的用户 ID
  • 那么如果我要实现它,默认管理员会发生什么?他怎么能改别人的密码..
  • 您可以检查管理员用户,如果用户是管理员或用户ID等于登录用户ID

标签: laravel routing


【解决方案1】:

是的,有可能

在您的控制器功能中,您可以检查当前/登录用户 ID 以及您将从 URL 获取的 ID

对于管理员用户,您还可以添加一个条件

if(ADMINUSER || LOGIN_USER_ID == URL_ID){

}

但我建议添加一个带有随机且唯一字符串的额外列,使用该列而不是 Id,在这种情况下,您的 URL 将是这样的

/changepassword/wcdftgHYuj346DERFD/edit

那么你需要在 random_string 'wcdftgHYuj346DERFD' 的基础上获取用户

【讨论】:

  • 是的,我喜欢这个建议,我不知道随机字符串可以用作 url 中的 id 字段
  • 所以意思是每次我创建新用户时它也会发送随机字符串然后当我拉出 id 时会一起检索字符串列?
  • 是的,在添加新用户时添加随机字符串,并在需要时检索它。
  • 所以在我的路线内我可以使用 get:('test/{randomstring}') 我可以使用这个吗?作为参数?
  • 是的,你可以添加这个
猜你喜欢
  • 2017-10-12
  • 2019-09-13
  • 2023-03-28
  • 2018-09-12
  • 2017-02-11
  • 2016-02-11
  • 2015-03-11
  • 2020-05-30
  • 2020-08-10
相关资源
最近更新 更多