电商项目开发day2
Hello everyone!正如大家所见,我的标题已经从改造改为开发了,而现实也确实是如此,我目前项目架构已经完全交给克劳德老师把握了(克劳德老师真香😋)。今天由于自身行程安排,当我开始敲代码的时候已经是下午和晚上了,因此今天的代码量不多。今天开始的任务就是业务逻辑的具体搭建了,对于一个网站项目,你登进去的第一秒我相信也一定是登录或注册页面吧。没错,这也是我业务逻辑搭建的第一步,就是登录与注册功能的具体实现,不过在进行crud之前,我先搭建了几个工具类,一个是密码的加密工具类,另一个则是jwt身份令牌工具类的相关搭建。
首先是密码的加密工具类,这一部分其实还挺简单的,主播这里用的是bcrypt加密,其实我原本是想用MD5加盐的加密方式,不过被告知可以MD5即使加了盐值也是可以被暴力破解的,所以主播便决定是使用bcrypt进行加密,也需要你自己导入相关的依赖才能进行使用。bcrypt这个加密算法是自带随机盐值的,并且可以自己把控破解难度。友友们听到可以自定义计算难度是不是觉得那直接越高越好,其实我也有过这样的疑问,不过查阅得知,这个密码是要经过服务器自己先进行2的n次方计算才能的得出最后的密码,也就是说你自定义的计算强度越大,服务器就干的越多,因此还需要考虑自身服务器的性能和需求再做决定,主播这里用的是默认的,也就是10,1024次的计算。这个工具类的搭建值需要你使用Bcrypt这个类的hashpw方法和checkpw方法就可以进行加密和检验了,剩下的你自己封装成各自需要的方法就可以了。

然后就是jwt工具类的相关搭建,还记得我第一次看黑马旗下的项目时,当时为了学redis,就从黑马的资料里把它的项目给拷贝过来了,当时我自己看的时候也是发现了一个jwt的工具类,只不过当时一点都看不懂,主要是链式调用这种东西确实太长了,新手看到那么多全新的api叠在一起难免看不懂。不过今天在claude的帮助下也是一点点搞出来了。所以其实搞到这里,我觉得网上有些话说的还是挺对的,那就是程序员学习最重要的绝对不是那些所谓的语法,而是那些实现思想,因为那些api什么的其实也就是别人自己命名的,底层那些东西短时间自己也看不懂,说白了有点印象会用就行了,自己敲多一点不会的问ai或者直接上网查。你搭建jwt相关的工具类首先就是获取令牌,这里太具体的参数什么的主播就不细说了,这里主播是使用用户id作为jwt的主题参数,也就是个人标识,然后用电话作为自定义字段,接着传入过期时间,签发日期,以及秘钥那些。这里有个带你,说到过期时间和秘钥,这里还是建议直接放在配置文件中的,也更方便些。你放入配置文件之后就要通过@Value这个注解去获取对应的值了。这个地方主播因为还生成了用于检验秘钥是否合格的secretkey,为了避免NPE,所以需要自定义一个带有@Postconstruct的init方法或者构造器注入,不过spring官方对于这种东西都是建议使用构造器注入作为最佳实践的,因此我在这个地方也是使用了构造器注入。使用构造器注入有一个优点,那就是你不仅可以通过@Autowired这类注解进行自动注入,也可以直接new一个完整的对象出来,不然的话假如你new的对象里面是有注解自动注入的字段的话,那这个字段是残废的,因为你自己手动new出来的东西spring是不会管的,因为你没有用到spring。并且spring自动注入实现是先调用构造器去创建对象,然后在beanpostprocessor之后去扫描带有注解的字段,再通过反射去注入字段,因此你构造器注入永远比字段注入先执行。token创建方法完成后,就可以定义解析token的方法了,至于为什么要解析token,怎么解析token,这里是先获取token的载荷,需要你定义token解析器,然后可以通过获取的载荷去获得你的自定义字段的值和主体的值,也就是用户id和手机号,你也可以分别定义两个方法去获取对应的结果,我就是。

其实说到这里也差不多了,大家晚安。
更多推荐




所有评论(0)