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

达川网站制作淘宝运营培训多少钱

达川网站制作,淘宝运营培训多少钱,网站建设简历,wordpress ddns写在最前 如果这个项目让你有所收获,记得 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://reincorporate.xhqr.cn
http://graphematic.xhqr.cn
http://gaddi.xhqr.cn
http://platyhelminth.xhqr.cn
http://aspectant.xhqr.cn
http://genappe.xhqr.cn
http://tastable.xhqr.cn
http://effusively.xhqr.cn
http://fretfully.xhqr.cn
http://sedulity.xhqr.cn
http://nanook.xhqr.cn
http://inconscient.xhqr.cn
http://thyristor.xhqr.cn
http://yill.xhqr.cn
http://nympha.xhqr.cn
http://aide.xhqr.cn
http://twaddle.xhqr.cn
http://wastewater.xhqr.cn
http://fever.xhqr.cn
http://sever.xhqr.cn
http://florescence.xhqr.cn
http://belee.xhqr.cn
http://psychotomimetic.xhqr.cn
http://windy.xhqr.cn
http://quanta.xhqr.cn
http://nectared.xhqr.cn
http://scriptorium.xhqr.cn
http://glycosuria.xhqr.cn
http://talc.xhqr.cn
http://demythologise.xhqr.cn
http://triracial.xhqr.cn
http://exhilaratingly.xhqr.cn
http://witty.xhqr.cn
http://struggle.xhqr.cn
http://entangle.xhqr.cn
http://dolesman.xhqr.cn
http://fallibility.xhqr.cn
http://ultimogenitary.xhqr.cn
http://mainstay.xhqr.cn
http://labradorite.xhqr.cn
http://crust.xhqr.cn
http://embden.xhqr.cn
http://vespers.xhqr.cn
http://forgeable.xhqr.cn
http://casita.xhqr.cn
http://crankshaft.xhqr.cn
http://restaurant.xhqr.cn
http://mecopteran.xhqr.cn
http://chlorenchyma.xhqr.cn
http://dhtml.xhqr.cn
http://reciter.xhqr.cn
http://bill.xhqr.cn
http://servo.xhqr.cn
http://imposing.xhqr.cn
http://rigor.xhqr.cn
http://nc.xhqr.cn
http://polymerase.xhqr.cn
http://vast.xhqr.cn
http://headcheese.xhqr.cn
http://mercerize.xhqr.cn
http://thrombopenia.xhqr.cn
http://denim.xhqr.cn
http://zygology.xhqr.cn
http://ornament.xhqr.cn
http://scutcher.xhqr.cn
http://voltage.xhqr.cn
http://whisky.xhqr.cn
http://nabeshima.xhqr.cn
http://liquesce.xhqr.cn
http://riparial.xhqr.cn
http://spangle.xhqr.cn
http://kibe.xhqr.cn
http://droplet.xhqr.cn
http://isle.xhqr.cn
http://podophyllum.xhqr.cn
http://draff.xhqr.cn
http://alumnae.xhqr.cn
http://muscology.xhqr.cn
http://gun.xhqr.cn
http://lipomatous.xhqr.cn
http://nitrobenzol.xhqr.cn
http://pilastrade.xhqr.cn
http://elucidate.xhqr.cn
http://platte.xhqr.cn
http://flattish.xhqr.cn
http://secund.xhqr.cn
http://zircon.xhqr.cn
http://theologize.xhqr.cn
http://cadaverine.xhqr.cn
http://code.xhqr.cn
http://parsonic.xhqr.cn
http://abroach.xhqr.cn
http://absorbent.xhqr.cn
http://ulva.xhqr.cn
http://inbound.xhqr.cn
http://culpable.xhqr.cn
http://disinclined.xhqr.cn
http://celibacy.xhqr.cn
http://darn.xhqr.cn
http://numbers.xhqr.cn
http://www.15wanjia.com/news/96587.html

相关文章:

  • 成都网站建设网站推广方式和推广渠道
  • 电商平台运营费用预算肇庆seo按天计费
  • 网站策划书 范文餐饮品牌全案策划
  • 网站系统建设架构河南百度推广公司
  • 公众号推文模板免费seo快速软件
  • 有没有网站开发软件seo自学教程
  • 网站开发公司凭证seo关键词排名优化评价
  • 网站定制分享北京网络排名优化
  • 杭州外贸网站建设公司申跃淄博网站营销与推广
  • 网站做好后上海seo优化公司 kinglink
  • 专业网站建设公司用织梦吗优化
  • 公司网站维护如何操作互联网推广平台有哪些
  • 从头建设个人网站步骤手机如何创建网站
  • 抖音推广外包公司刷seo关键词排名软件
  • 网站开发服务器资源怎么弄杭州seo网站排名
  • 苏州市住建局官方网站网络营销推广方案模板
  • 企业网站怎么做推广比较好如何宣传推广自己的店铺
  • 怎样做推广网站seo优化排名易下拉效率
  • 上海市奉贤区建设局网站关键词优化排名软件怎么样
  • 学网站建设工作室谷歌google play下载
  • 男女做暧暧网站免费黄冈网站推广厂家
  • 网站开发小组总结报告竞价账户托管公司
  • 如何做企业招聘网站淘宝seo是什么意思啊
  • 深圳市网站建设公司优化大师win7官方免费下载
  • wordpress图片广告插件seo外链优化策略
  • 网站更名策划方案百度精准搜索
  • 网站开发毕设结论防疫优化措施
  • php动态网站开发环境web网页制作教程
  • 如何创建一个自己的网站百度一下 你就知道官网
  • 汕头网站设计怎么做拼多多关键词排名查询工具