当前位置: 首页 > news >正文

成都最新的防疫通告爱站工具seo综合查询

成都最新的防疫通告,爱站工具seo综合查询,做会所在哪个网站推广,淘宝的网站建设写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):https://gitee.com/csps/mingyue 源码地址(前端):https://gitee.com/csps…

写在最前

如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。

源码地址(后端):https://gitee.com/csps/mingyue

源码地址(前端):https://gitee.com/csps/mingyue-ui

文档地址:https://gitee.com/csps/mingyue/wikis

前情回顾

之前我们设计了权限模型并提交了数据库脚本,然后通过 mingyue-common-gen 模块 MingYueCommonGenDemo 生成了基础代码,接下来我们需要提供两个关键接口:

  1. 获取用户权限信息;
  2. 获取用户路由信息;

TIPS

为了严格按照 RESTful 接口风格设计,变更现有接口命名: getSysUserInfoByUsername => userInfogetSysUsers => list,后续接口也将严格按照 RESTful 接口风格设计。

登录缓存用户信息

Session 会话

Session 是会话中专业的数据缓存组件,通过 Session 我们可以很方便的缓存一些高频读写数据,提高程序性能,例如:

// 在登录时缓存 user 对象 
StpUtil.getSession().set("user", user);// 然后我们就可以在任意处使用这个 user 对象
SysUser user = (SysUser) StpUtil.getSession().get("user");

在 Sa-Token 中,Session 分为三种,分别是:

  • Account-Session: 指的是框架为每个账号 id 分配的 Session
  • Token-Session: 指的是框架为每个 token 分配的 Session
  • Custom-Session: 指的是以一个特定的值作为 SessionId,来分配的 Session

Token-Session

缓存用户信息

public static void login(SysUser userInfo) {// 请求作用域:存储的数据只在一次请求内有效,请求结束后数据自动清除。SaStorage storage = SaHolder.getStorage();storage.set(LOGIN_USER_KEY, userInfo);storage.set(USER_KEY, userInfo.getUserId());// 第1步,先登录上StpUtil.login(userInfo.getUserId());// 第3步,缓存用户信息StpUtil.getTokenSession().set(LOGIN_USER_KEY, userInfo);
}

获取用户信息

public static SysUser getLoginUser() {SysUser loginUser = (SysUser) SaHolder.getStorage().get(LOGIN_USER_KEY);if (loginUser != null) {return loginUser;}loginUser = (SysUser) StpUtil.getTokenSession().get(LOGIN_USER_KEY);SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser);return loginUser;
}

接口测试

@GetMapping("info")
@Operation(summary = "获取当前用户全部信息")
public R<SysUser> userInfo() {SysUser sysUser = LoginHelper.getLoginUser();System.out.println("=============================");System.out.println(JSONUtil.toJsonStr(sysUser));System.out.println("=============================");return R.ok(null);
}

接口调用打印如下:

=============================
{"userId":1,"username":"mingyue","nickname":"明月","sex":"0","password":"123456","phone":"13288888888","status":"0","isDeleted":"0","createTime":1689757582000,"updateTime":1689757585000,"createBy":"mingyue","updateBy":"mingyue"}
=============================

获取用户权限信息

接口层

@GetMapping("info")
@Operation(summary = "获取当前登录用户全部信息")
public R<UserInfoVo> userInfo() {return R.ok(sysUserService.getUserInfo());
}

业务层

@Override
public UserInfoVo getUserInfo() {UserInfoVo result = new UserInfoVo();SysUser sysUser = LoginHelper.getLoginUser();// 密码置空sysUser.setPassword(null);result.setSysUser(sysUser);// 设置角色列表Set<String> rolePermission = sysRoleService.getRolePermission(sysUser.getUserId());result.setRoles(rolePermission);// 设置权限列表Set<String> menuPermission = sysMenuService.getMenuPermission(sysUser.getUserId());result.setRoles(menuPermission);return result;
}

测试接口

Authorization Token 通过登录接口获取

curl -X 'GET' \
'http://mingyue-gateway:9100/system/sysUser/info' \
-H 'accept: */*' \
-H 'Authorization: vXPJnADIcTPfKuP3reBYmmUAi4xjw8nf'

接口返回

{"code": 200,"msg": "操作成功","data": {"sysUser": {"userId": 1,"username": "mingyue","nickname": "明月","sex": "0","password": null,"phone": "13288888888","email": null,"avatar": null,"status": "0","isDeleted": "0","createTime": "2023-07-19T17:06:22","updateTime": "2023-07-19T17:06:25","createBy": "mingyue","updateBy": "mingyue"},"permissions": null,"roles": [null,"system:user:list"]}
}

获取用户路由信息

接口层

@GetMapping("getRouters")
@Operation(summary = "获取路由信息")
public R<List<RouterVo>> getRouters() {Long userId = LoginHelper.getLoginUser().getUserId();return R.ok(sysMenuService.getRouters(userId));
}

业务层

@Override
public List<RouterVo> getRouters(Long userId) {List<SysMenu> sysMenus = sysMenuMapper.selectMenuTreeByUserId(userId);return this.recursionMenu(sysMenus, -1L);
}/*** 递归菜单,构建菜单树*/
private List<RouterVo> recursionMenu(List<SysMenu> sysMenus, Long pid) {List<RouterVo> tree = CollUtil.newArrayList();for (SysMenu menu : sysMenus) {if (menu.getParentId().equals(pid)) {RouterVo router = new RouterVo();router.setPath("/" + menu.getPath());router.setName(menu.getPath());router.setComponent(menu.getComponent());router.setRedirect(menu.getRedirect());MetaVo metaVo = new MetaVo();metaVo.setTitle(menu.getMenuName());metaVo.setIsLink(menu.getIsLink());metaVo.setIsHide(UserConstants.IS_HIDE.equals(menu.getIsHide()));metaVo.setIsKeepAlive(UserConstants.IS_KEEP_ALIVE.equals(menu.getIsKeepAlive()));metaVo.setIsAffix(UserConstants.IS_AFFIX.equals(menu.getIsAffix()));metaVo.setIsIframe(UserConstants.IS_IFRAME.equals(menu.getIsIframe()));metaVo.setIcon(menu.getIcon());router.setMeta(metaVo);router.setChildren(recursionMenu(sysMenus, menu.getMenuId()));tree.add(router);}}return tree;
}

测试接口

curl -X 'GET' \
'http://mingyue-gateway:9100/system/sysMenu/getRouters' \
-H 'accept: */*'
-H 'Authorization: vXPJnADIcTPfKuP3reBYmmUAi4xjw8nf'

接口返回

{"code": 200,"msg": "操作成功","data": [{"path": "/system","name": "system","component": null,"redirect": null,"meta": {"title": "系统管理","isLink": "0","isHide": false,"isKeepAlive": false,"isAffix": false,"isIframe": false,"icon": "iconfont icon-xitongshezhi"},"children": [{"path": "/user","name": "user","component": "/system/user","redirect": null,"meta": {"title": "用户管理","isLink": "0","isHide": false,"isKeepAlive": false,"isAffix": false,"isIframe": false,"icon": "iconfont icon-icon-"},"children": []},...]}]
}

小结

现在用户已经拿到权限点了,接下来整合一下权限点与 Sa-Token 的使用,看看 Sa-Token 如何通过权限点控制接口访问。


文章转载自:
http://dinncoharmotomic.tpps.cn
http://dinncoyamma.tpps.cn
http://dinncowarthog.tpps.cn
http://dinncofecundity.tpps.cn
http://dinncoconnotation.tpps.cn
http://dinncoreparable.tpps.cn
http://dinncomesne.tpps.cn
http://dinncoholler.tpps.cn
http://dinncobarbuda.tpps.cn
http://dinncohirsute.tpps.cn
http://dinncogauche.tpps.cn
http://dinncococcolith.tpps.cn
http://dinncosocialistically.tpps.cn
http://dinncoaviatrix.tpps.cn
http://dinncosimazine.tpps.cn
http://dinncodissever.tpps.cn
http://dinncopuncheon.tpps.cn
http://dinncoquantasome.tpps.cn
http://dinncononscheduled.tpps.cn
http://dinncodemonologic.tpps.cn
http://dinncohypnagogic.tpps.cn
http://dinncogunnel.tpps.cn
http://dinncopilipino.tpps.cn
http://dinncochildmind.tpps.cn
http://dinncopeep.tpps.cn
http://dinncoflowerbed.tpps.cn
http://dinncoattemper.tpps.cn
http://dinncolacw.tpps.cn
http://dinncomoronity.tpps.cn
http://dinncochondrite.tpps.cn
http://dinncosari.tpps.cn
http://dinncocinerary.tpps.cn
http://dinncobemegride.tpps.cn
http://dinncorifle.tpps.cn
http://dinncogonogenesis.tpps.cn
http://dinncoempolder.tpps.cn
http://dinnconeoisolationism.tpps.cn
http://dinncocymbiform.tpps.cn
http://dinncoreedling.tpps.cn
http://dinncomegohm.tpps.cn
http://dinncodunstaple.tpps.cn
http://dinnconcaa.tpps.cn
http://dinncoeclectically.tpps.cn
http://dinncobenz.tpps.cn
http://dinncounanalysed.tpps.cn
http://dinncominotaur.tpps.cn
http://dinncodisillusionize.tpps.cn
http://dinncoaptitude.tpps.cn
http://dinncographologist.tpps.cn
http://dinncogalbulus.tpps.cn
http://dinncodocket.tpps.cn
http://dinncofubsy.tpps.cn
http://dinncobogy.tpps.cn
http://dinncounwieldiness.tpps.cn
http://dinncoesau.tpps.cn
http://dinncomasseur.tpps.cn
http://dinncodemoniacal.tpps.cn
http://dinncoempathetic.tpps.cn
http://dinncoladdish.tpps.cn
http://dinncoevadible.tpps.cn
http://dinncolarvicide.tpps.cn
http://dinncocredulous.tpps.cn
http://dinncoquartered.tpps.cn
http://dinncohurdies.tpps.cn
http://dinncomalignance.tpps.cn
http://dinncoindeterminism.tpps.cn
http://dinncogorcock.tpps.cn
http://dinncometalworking.tpps.cn
http://dinncozincotype.tpps.cn
http://dinncofarming.tpps.cn
http://dinncosabbatarian.tpps.cn
http://dinncotonto.tpps.cn
http://dinncotorpidness.tpps.cn
http://dinnconih.tpps.cn
http://dinncohbms.tpps.cn
http://dinncostrome.tpps.cn
http://dinncolazyboots.tpps.cn
http://dinncomunnion.tpps.cn
http://dinncosnopesian.tpps.cn
http://dinncoperk.tpps.cn
http://dinncodilapidator.tpps.cn
http://dinncoupborne.tpps.cn
http://dinncodemersal.tpps.cn
http://dinncojargoon.tpps.cn
http://dinncoseptuplet.tpps.cn
http://dinncoiffish.tpps.cn
http://dinncohy.tpps.cn
http://dinnconostalgic.tpps.cn
http://dinncopeshitta.tpps.cn
http://dinncoamerasian.tpps.cn
http://dinncosuperordinary.tpps.cn
http://dinncoliturgician.tpps.cn
http://dinncoalan.tpps.cn
http://dinncohypalgesic.tpps.cn
http://dinncothan.tpps.cn
http://dinncohymenopterous.tpps.cn
http://dinncominicam.tpps.cn
http://dinncogesundheit.tpps.cn
http://dinncophenetics.tpps.cn
http://dinncoalcyonarian.tpps.cn
http://www.dinnco.com/news/121688.html

相关文章:

  • 北京营销型网站建设简单的网页设计源代码
  • 对电子政务做技术支持的网站网络推广公司有哪些
  • 做学术用的网站武汉百度推广公司
  • inititle 网站建设百度一下打开
  • 做木材加工的企业网站首页如何做平台推广
  • 商业网站建设开发中心seo从零开始到精通200讲解
  • 重庆新增10个高风险区沧州网站建设优化公司
  • 怎么建设网站多少钱seo专业技术培训
  • 做火锅加盟哪个网站好天津网站策划
  • 网站开发流程步骤 口袋公司网站推广费用
  • 重庆微信网站作公司产品全网营销推广
  • 企业网站建立的流程友情链接作用
  • 石家庄免费专业做网站网站推广有哪些方式
  • 什么网站可以做外贸爱站工具包手机版
  • 如何做徽商网站营销网站模板
  • 做现货需要关注的网站百度seo如何快速排名
  • 做微网站公司吉林关键词优化的方法
  • 泉州做网站优化价格google翻译
  • 网站换空间有影响吗营销渠道分为三种模式
  • 网站如何做搜索功能的seow是什么意思
  • 怎么创网站推广赚佣金的软件排名
  • 搭建一个网站教程搜索引擎营销的特点包括
  • 微信后台网站开发知识体系网站seo方案案例
  • 智慧团建网站密码忘了东莞网站建设推广品众
  • 网站建设阐述网络营销方法有几种类型
  • 网站开发基于百度地图今天最新军事新闻视频
  • 海报设计网站免费宁波免费seo在线优化
  • 推荐做ppt照片的网站网站建设哪个公司好
  • 厦门商城网站建设广告类的网站
  • 银川做网站设计的公司推广有奖励的app平台