电子政务平台官网,关键词是网站seo的核心工作,酒店网络营销推广方案,一个人做网站好难本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客
仅用于学习和讨论#xff0c;如有侵权请联系
源码#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材#xff1a;https://pan.baidu.com/s/… 本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客
仅用于学习和讨论如有侵权请联系
源码https://gitee.com/green_vegetables/x-admin-project.git 素材https://pan.baidu.com/s/1ZZ8c-kRPUxY6FWzsoOOjtA 提取码up4c 项目概述笔记https://blog.csdn.net/m0_37613503/article/details/128961102 数据库笔记https://blog.csdn.net/m0_37613503/article/details/128961401 前端笔记https://blog.csdn.net/m0_37613503/article/details/128961447 后端笔记https://blog.csdn.net/m0_37613503/article/details/128961569
1、response是发给后端之后返回的结果我们要根据这些东西实现后端登录接口
1.1
2 接口数据笔记都有
2.1
3 首先实现我们的登录接口因为登录跟用户相关你可以用控制器也可以重新写一个控制器 3.1 现在写登录请求的控制器 3.2 登录请求是/user拼上/login 4 返回数据是result你想要返回什么数据是什么类型的 4.1 里面是个对象但是我们可以放N个参数 4.2 可以返回Map,里面是Mapping方法 4.3 然后我们再return一下,这样就不会报错了 4.4 我们需要用户名和密码这里需要参数过来这里需要用户名和密码 4.5 用户名和密码刚好我们类中有这个参数 4.6 用他来进行接受但是你接受不到因为他过来是json字符串的形式过来的 4.7 用requestBody,来进行转换 5 有了用户名之后我们要怎么做可以用来检验用户登录操作登录操作怎么做根据用户名到数据库里查一下查到这个用户就表示你的登录信息是正确的 5.1 我把user传给他之后给我返回一个Mapper,不过这个login方法我没写 5.2 按住Alt enter可以快速生成代码接口也生成了这样操作代码非常快 6 这里接口写好了但是实现类没有这里有未实现的方法给他补一下 6.1 这里写一下登录逻辑 6.2 token登录凭证单体架构是sesson 6.3 6.4 查一条数据 6.5 用它 L.. 6.6 我们设置一下条件
6.7 这里我们需要传入字段名如果你不用Lambda去写是无法识别你是正确的还是错误的用的时候就知道更灵活在用的时候就知道你写没写对 6.8 双冒号后写传入的参数 User:: (好像是为了避免写字符串)
6.9如果没有查用户名会成为not暂时查不到
6.10 搞一下密码
6.11 条件准备ok 7、把login 传入里面可以得到用户 7.1 判断值不等于null 8 用key值什么uuid 8.1 返回数据我给他一个token 返回一个key 9 这个写完之后返回控制器里面 9.1
10 我在浏览器中发送的任何请求都是get 请求现在可以用测试工具postman 10.1 浏览器发送的请求是post,其他的是get 11、使用postman发一个post 请求先写一个地址 11.1再写一个json数据 12、现在已经测试成功了返回的数据是code20000 12.1 13 登录接口实现了1半但还差存入这个操作redis 13.1 存入redis你得保证redis是启动的 14、存入redis怎么存那首先你得整个到我们的项目里 14.1 首先你得添加redis的依赖 15 设置redis 的服务地址和端口 15.1如果不redis的配置等一下会产生问题
16 在com.lantu下新建一个类 16.1 写真么一个类 17 首先加一个configuration注解 17.1 这里我们就是来配置一个bean返回名和返回类型就是他 17.2 创建一个redisTemplate对象 17.3 这里的键盘文件是第一个写string 18、现在真么写是没有关系的因为配置文件不全 18.1 set connection意味着连接上redis 19 保持redis里面键值化的问题 19.1 如果你不做序列化你到redis里面去查的话你可能看不懂甚至你看到的是乱码 20 我们设计一下redis 20.1 这个是针对string数据类型的方法 20.2 把对象传入到string类型的参数你需要转化为一个json,如果你不转化为Json你在数据库里看不懂这个数据库 20.3 这样写完针对键针对值都做了序列化处理了 ##
21、什么叫简单数据里面存入的用户名姓名电话等这种数据都是简单的字符串但是我往里面存入的内容包括子对象日期包含集合他的序列化这时候数据非常复杂我得对他进行处理 21.1 22复制这一小串代码 22.1 放到我们的项目当中 23 通过这个对象进行处理 23.1
24 现在我想注入redis,加入注解Autowired,在公司还会针对redis进行封装工具类-----P17
24.1 25 我们需要new一个真么样的东西 25.1
26 里面写object 26.1
27 这句话的意思是我们对键和值都做了序列化处理 27.1
28 登录是有时效的 28.1
29 这句话表示30分钟 29.1
30 重启一下按右上方的重启键,我们再重新测试一下 30.1
31、再打开redis.... 31.1
32 打开dbo 32.1
33 缓存到redis里的数据 33.1
34 实现登录功能还要两个接口 34.1
35 要准备一个获取用户信息的接口 35.1
36 摁F12点一下登录看login 36.1
37 除了login请求之外还有一个获取用户登录的信息 37.1
38 重点是携带一个参数 38.1
39 再看一下响应 39.1
40 先要学习springBoot 40.1
41、统一的数据格式这里我弄后端的时候也要设计成这种模式提前写明返回参数是什么必须拿下springBoot 41.1
42 我们来实现一下这个接口先来到userController控制器里然后写一个GetMapping“/info”请求 42.1 我们返回什么东西那我们返回的数据时比较复杂的这里面是个对象 43 回到返回的数据写类类型想写类类型类类型写?也可以 43.1 我们再写一个getUserInfo的接口他需要携带一个参数跟在/info后面这里需要用到一个注解RequsetParm 43.2 来获得一个类型String,这个token是什么是我们前面登录接口里面 44 这个登录接口里面 44.1写入了一个token暂时是UUID生成的 45 根据token获取用户信息从我们的redis中进行获取因为我们把我们的数据存入到了redis里面我们需要他把一个data数据给我 45.1 之后我们把我们的数据给带出去 45.2 再多写一个逻辑增加一个判断 45.3 如果你没查到数据那么你的登录一定是失效的 45.4 用户信息失效请重新登录
45.5 这个接口我没有实现一定要按住alt enter,生成接口方法 46 来到我们serive里面给他添加一个实现 46.1 这里面的逻辑就是我们写的这句话 46.2 我们需要token从里面获取验证信息 46.3 token就是我们的key我们现在得到的结果一定不是我们的user对象 47之前做了序列化处理现在我们要做反序列化处理才能够获取user对象 47.1 首先user对象不能等于null,我们才做这件事 47.2 在pom.xml中导入fastjson,导进来之后回到我们serive里面之后我们可以将我们传入的对象反序列化我们的目标类型 47.3 我们想要做的事情我们想获得他的登录数据但这个类型是不对的这个类型是object 47.4 他这里做了重载这里面有很多类型 47.5 本质上他是一个hashMap对象把他转换为一个json字符串 47.6 外面套个东西把他反序列化一下
47.7 反序列化之后我们就可以把他的user给取出来我们定义一个返回的数据对象new一个hashMap 47.8 之后我们往里面放数据 47.9 用户名为name,如果你想前端不加name的话前端代码还需要一点点微调 47.10 我们需要到loginUser里拿用户名 47.11 再存入一个数据头像这下面是用户头像的地址 47.12 角色管理在我们一般权限的设计里一个用户可能会身兼数职角色不会限定于一个因此一般是数组 47.13 角色表创建一个简单的角色表 47.14 角色表一号用户他的角色就是1号角色起到权限控制 47.15 一号角色就是admin的角色他是个超级管理员同时他也是一个普通员工 48 之后我想查他是什么角色我要查这张表把角色id给查出来 48.1 放到我们的角色列表里把角色id查出来放到我们这张表里
角色id 48.2 关联查询的缺点随着数据量的增大关联查询效率是很低的 48.3 这里我已经拿到了用户信息现在要使用用户id 48.4 我要查询用户id并且用户id还是1 48.5 查到了两条数据 48.6 实际我想要角色id, 我想放到我项目里面做一个角色的名称 48.7 关联有两种方式一种是内连接一种是外连接 48.8 内连接就是我们角色id和另一个id都必须存在 48.9 外连接是如果我们用户满足这张表这张表的数据可以查出来另一张表的数据不影响 49 如果你数据完整内连接外连接都一样现在我们用内连接关联x_role表 49.1弄了两张表 49.2 角色id 关联上 49.3 关联上用户角色等级 49.4 没有.是一种错误 现在我只想查role_name,现在我可以查到两个角色 50 现在我写外连接左外连接以左边为主表 50.1 外连接的写法我们用外连接如果 50.2 这个条件关联不上但是主板的数据符合也是可能查出来的 50.3 用内连接如果关联条件查不上那么整条条件也查不出 51、写一条sql语句 51.1 resultType结果类型 51.2 把sql语句给复制过去 51.3 这里的1不要写死是我们传入的参数