当前位置:网站首页>53:第五章:开发admin管理服务:6:开发【admin管理员退出登录,接口】;(一个点:我们想要修改一个采用了某种编码方式的值时,新的值最好也按照这种编码方式编码后,再去修改;)
53:第五章:开发admin管理服务:6:开发【admin管理员退出登录,接口】;(一个点:我们想要修改一个采用了某种编码方式的值时,新的值最好也按照这种编码方式编码后,再去修改;)
2022-07-28 00:20:00 【小枯林】
说明:
(1)本篇博客内容:开发【admin管理员退出登录,接口】;
(2)一个点:我们想要修改一个采用了某种编码方式的值时,新的值最好也按照这种编码方式编码后,再去修改;
● 即,假设a="df",然后其编码方式是“UTF-8”;然后,我们想要把a修改为"fg"的时候,"fg"最好也用"UTF-8"编码一下,然后再把这个新值灌给a;
目录
1.在【api】接口工程的AdminMngControllerApi接口中,定义【admin管理员退出登录,接口】;
2.在【admin】管理服务的AdminMngController类中,去实现【admin管理员退出登录,接口】;
退出登录,主要是把"用户登录信息"进行清除;即,清除向Redis中存放的token;清除以前保存在cookie中的用户aid和atoken等信息;
在【39:第三章:开发通行证服务:22:退出登录&注销会话;】中,我们开发的是普通用户退出登录;其与本篇博客的管理员用户退出登录,差不多;
1.在【api】接口工程的AdminMngControllerApi接口中,定义【admin管理员退出登录,接口】;
/** * 【admin管理员退出登录,接口】; * @param adminId * @param request * @param response * @return */ @ApiOperation(value = "admin管理员退出登录", notes = "admin管理员退出登录", httpMethod = "POST") @PostMapping("/adminLogout") //设置路由,这个是需要前后端约定好的; public GraceJSONResult adminLogout(@RequestParam String adminId, HttpServletRequest request, HttpServletResponse response);说明:
(1) 这个接口的url、请求方式、参数,不是瞎写的,需要前后端保持一致;
2.在【admin】管理服务的AdminMngController类中,去实现【admin管理员退出登录,接口】;
/** * 【admin管理员退出登录,接口】; * @param adminId * @param request * @param response * @return */ @Override public GraceJSONResult adminLogout(String adminId, HttpServletRequest request, HttpServletResponse response) { redisOperator.del(REDIS_ADMIN_TOKEN + ":" + adminId);//首先,清除向Redis中存放的token; deleteCookie("atoken", request, response); deleteCookie("aid", request, response); deleteCookie("aname", request, response); return null; }说明:
(1) 这儿的逻辑和 【39:第三章:开发通行证服务:22:退出登录&注销会话;】中的做法一模一样;只是,删除cookie的逻辑,我们单独抽出了一个方法;
(2)这儿需要注意一个开发时,建议遵守的点:
● 我们前面在向cookie中设置值的时候,其都采用【URLEncoder.encode(待编码字符串, “UTF-8“);】编码了;即,此时cookie中的值都是上述编码的格式;
● 那么,我们在修改cookie中的值的时候,这个值,最好也利用【URLEncoder.encode(待编码字符串, “UTF-8“);】编码一下;
● 这有助于,规避掉很多可能出现的、奇奇怪怪的问题;(尤其是在生产环境中)
● 对于这一点,自己稍微有点感觉;但,其实不是十分明白的,理解的不透彻;
3.效果;
先全局install一下整个项目;然后,启动前端项目;记得使用SwitchHost开启虚拟域名映射;启动【admin】管理服务的主启动类;
……………………………………………………
边栏推荐
猜你喜欢

Data warehouse construction - DWS floor

Flink 在 讯飞 AI 营销业务的实时数据分析实践

js 哪些情况不能用 JSON.parse 、JSON.stringify深拷贝及一个更好的深拷贝方法
![[Taichi] draw a regular grid in Tai Chi](/img/48/14e825562afa3ffba96296799617f7.png)
[Taichi] draw a regular grid in Tai Chi

Redis设计规范

In the era of great changes in material enterprises, SRM supplier procurement system helps enterprises build a digital benchmark for property procurement
![[interview: concurrent article 28:volatile] orderliness](/img/8d/c4c2ca08d8883e997709d208b7395b.png)
[interview: concurrent article 28:volatile] orderliness

Blizzard Diablo 4 ps5 / PS4 beta added to Playstation database

Fiddler mobile packet capturing agent settings (for Huawei glory 60s)

Embedded classic communication protocol
随机推荐
软件测试面试题:你认为做好测试用例设计工作的关键是什么?
day7
Gbase 8C backup control function (II)
2022软件测试技能 Robotframework + SeleniumLibrary + Jenkins web关键字驱动自动化实战教程
##ELK日志分析系统搭建##
Gbase 8C transaction ID and snapshot (VI)
GBase 8c 事务ID和快照(一)
GBase 8c 备份控制函数(三)
leetcode: 515. 在每个树行中找最大值
Modify the request path using the streaming API of gateway
在生产型企业中,MES系统有哪些重要应用
Digital economy is the core of future economic development
ros2 launch文件常用模块
Common modules of ros2 launch files
Linux Installation mysql8.0.29 detailed tutorial
FreeRTOS kernel summary
递归的使用:1.将平铺数组转为树 2.将树转化为平铺数组
写给去不图床用户的一封信
ArcGIS:加载历史遥感影像
What devices does devicexplorer OPC server support? This article has listed






