本期视频登录后即可观看

让系统更加完善和安全的全局路由保护器

我们应用中不是所有的路由都向所有人开放的,甚至可以说,大部分都是不开放的,只有访客拥有特殊的权限才可以访问特定的路由和资源.全局保护器可以很好的帮我们实现我们的目标.安全性和可架构性在前端也得到了充分的体现.

along 2021.06.26 14:10

你好,想请教一个问题.

最近在开发一个项目.客户要求,并不要用户登录,就可以浏览自己写入的N条信息.

例如:http://www.test.com/test/list/3.这里的3是用户ID.查看用户3自己写的每天信息.

编辑时:http://www.test.com/test/10/edit这里的10是用户3编写的第一条数据.

这时,就会出现,用户3自己更改URL,查看到其他用户的信息....

我现在想到的解决方法是,

第一种.对URL里面的用户ID,用户编写信息的ID,通过HASH加密,保存到数据库里面,给用户发加密后的网址.

如:http://www.test.com/test/list/3 -&gt http://www.test.com/test/list/sdfowueiu232skdjf1. 通过对照sdfowueiu232skdjf1和数据库里面的,来判断是不是这个用户.

但是,需要对每条信息也要设置hash加密密码,来判断

第二种.使用JWT,使用token来区分.但是具体怎么实现,还需要验证.

第三种,使用GET,先到list页面,这是使用第一种HASH加密来判断是不是这个用户,在后台来实现用户登录.然后查看自己编写的每条信息时,通过laravel的身份认证.

老师有没有什么好的解决方案呢?请赐教

国营 2021.06.26 15:03

刚看到,用第一种就好或者第二种就好。第三种本质上还是需要启用了用户认证和登录过程,还不如使用第一种,这会造成更严重的问题,系统自动替用户登录了,万一这个网址泄露了,别人就相当于可以登录这个用户的系统,访问所有的信息了,所以绝对不可取。

平时银行或者电信公司发送的短信就是第一种或者第二种解决方案的结合体,只不过不能是对ID进行hash,其他的比如邮箱,手机字段也不可以,这个被猜到就完蛋了。需要专门建立一张映射表格,这个表格里需要包含以下核心字段

user_id 用户ID

random_token

operation - 执行什么操作,比如这个 token只能执行账户余额的查看,其他比如流水信息不可查看

expire_time - 过期时间,过期后不可访问

这样既可以保证安全性,也不需要用户登录系统。网址泄露了,也不会危害到其他类似信息的访问安全。因为相同用户的其他信息访问使用的是不同的 token。

along 2021.06.27 00:45

非常感谢你的回复.昨晚问完问题就睡了,现在才看到.

我自己也比较喜欢第一种方法,你考虑到的实在是太周全了,那些细节我根本就没有想到,只想着随便加密一下就ok....

第二种JWT,仔细想想,这个也是需要登录的.如果登录的URL被猜到了,,就和第三种一样,没有意义了...

再次感谢你的建议

国营 2021.06.27 02:26

JWT 分情况吧,token 跟 token 是不一样的,有一个用于用户认证的专属 token,其余具体权限相关的 token 可以不必完成用户的登录就可以直接操作,就是为了验证它的从属用户和权限即可。

微信扫码登录