day15

工作日报表
日期 06日08月2024年
任务安排 今天主要是老师讲了讲如何完成购物车的任务,然后就让我们做项目
任务完成情况 完成redis的相关配置,收尾所有迭代一的任务,搭建好python环境便于进行拓展任务
工作中的问题 今天解决redis的问题挺让人印象深刻的,老师指出了filter报jwtUser无法接受一个user的对象可能是因为loadUserByUsername 的时候本身就存进去是user对象而不是jwtUser对象,其实本来就应该存储的是JwtUser对象的,因为这是验证登录与否,我这么写纯粹是把代码交给ai了,而且还没有仔细搞懂其中的逻辑,本来在loadUser的不应该查询redis的,但是ai却让查询了redis,因为这个时候还没有将token存储进redis,自然就不可能获取到正确的token,所以这个时候必须使用数据库来校验用户名和密码,验证正确后,才生成一个JwtUser对象,这是为了方便之后的filter做校验的,所以很重要,将这个token和jwtUser存进redis,这时候才开启redis,之后用户拿着token来访问的时候,不会走LoadUserByUsername,而是直接走filter,所以需要在filter里面校验这个token是否存在,首先要看是否携带token,如果携带,那么这个token是否在redis里面存储,如果没有,就直接放行,让他去执行loadUserByUsername的方法,如果携带token的话,就要校验这个token是否过期,首先从token中获取用户名,用这个用户名,来试图获取存储在redis里面的jwtUser,如果真的获取到了,那就说明没有过期,那就设置他的authentication,便于请求方法方法,反之如果取不到这个jwtUser,就说明过期了,这个时候可以抛出一个异常,说用户登录信息过期或不存在,或者选择再次调用loadUserByUsername的方法,来重新生成token存入redis,如果成功获取到了一个jwtUser,就可以直接存一个authentication,用于之后的请求,反之就抛异常就行了
总结与思考 最多能同时处理几个人,直接限流,服务降级,要么是锁表,设置让人不能在对表执行操作,或者设置同步代码块,这样就会只让一个线程执行操作,就像上厕所,只能同时有一个人上厕所,上厕所会锁门,这样剩下的人只能等着,这样就保证了同一时刻获取到的订单一定是自己刚添加进去的,还可以再加上一些用户名的限定或者其他的限定之类的,更进一步保证能够获取到的最新的id一定是属于自己刚添加进去的记录的id,而不是别人的订单id;但是这样势必会导致变慢,所以浏览器会有最长等待时间,超过时间,就不会再请求了

你可能感兴趣的:(实训一,redis)