16 | 实战痛点2:项目开发中的权限系统
该思维导图由 AI 生成,仅供参考
登录权限
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了在项目开发中权限系统的实战应用。首先讨论了登录权限的重要性,并介绍了如何在前端项目中实现登录认证和权限控制。文章详细介绍了模拟登录接口和页面、token的生成和存储,以及通过axios实现前端网络请求的token限制。此外,作者还介绍了使用vue-router的导航守卫实现页面跳转权限认证的方法。文章还涉及了RBAC权限管理机制,以及动态路由的实现方法。最后,文章对token和cookie的区别进行了解释,并指出了基于token的权限解决方案在前后端分离场景下的优势。整体而言,本文通过实际代码和示例,详细介绍了前端项目中权限系统的实现方法,对于需要了解项目权限系统的读者具有一定的参考价值。
《玩转 Vue 3 全家桶》,新⼈⾸单¥68
全部留言(31)
- 最新
- 精选
- 关关君使用老师之前的代码按照文章的流程实现: 1. mock数据 2. jwt生成Token验证 3. 拦截器Token加头 4. 路由守卫权限验证 5. 登录逻辑 对前端了解不全面的同学克隆下来看看整个流程代码,希望对你有帮助 https://github.com/yanbinkwan/Vite-Course git clone https://github.com/yanbinkwan/Vite-Course.git
作者回复: cool ! 非常好的实战经验
2021-11-24331 - ll大圣讲的很详细,点赞,我在课后还是要实际写遍代码,跑起项目来才能更好的吸收知识。 另外关于登录状态有个疑问,网上搜索了下,不确定是否叫做,多点登录状态限制问题。就是像极客时间这种网页登录后,在别的设备登录后,这边就下线了。 我能猜到的大概有两种方式: 1. 轮询查询,setInterval 之类的定时器,定时查询,然后我打开dev-tool的Performance发现是有定时任务在跑,不过代码最小化过,不太容易看。 2. webSocket 长链接,某个设备登录以后用webSocket之类的方式保持长连接,其他设备登录后,登录状态改变,服务端发个下线的指令这种。 已上,望指教,大概的思路或有相关文章就好,谢谢
作者回复: 其实最简单的方式就是设置一个缓存层比如redis存储token,每次登录都生成新的token,会吧之前的token覆盖掉,校验的时候从缓存校验一次就可以实现
2021-11-22723 - Geek_liuke做项目的时候遇到过大厂后台不愿意做token过期判断的情况。只有前端自己设置token过期时间和判断,需要在axios里增加一个每成功调用一次接口就自动延长token期限的逻辑。在页面中还需要增加一个watch,监听token期限的变化,期限到了或者token被清空了就自动跳转到登录页去。
作者回复: 我做过类似的需求,是对接了三个系统,三个token的过期时间不一样
2021-11-2249 - Geek_e97208路由控制权限感觉是个伪命题,项目实际情况都是无权限看不到具体按钮或者菜单。不会给用户点了菜单结果是404。大圣觉得呢
作者回复: 路由和菜单绑定一起控制权限,用户肯定是是看不到按钮的,路由的控制主要是防止直接输入对应地址的访问 还有一种情况是有些页面你想让用户看到,但是用户点进去需要升级或者付费才能有权限,入口打开但是不能访问 ,具体怎么控制其实要看具体的需求
2021-12-1527 - 海阔天空权限系统确实是实战疼点。token 的过期时间认证是由后端来实现和完成的。所以我们需要做http请求的响应拦截。以此判断是否登录和是否登录过期。请问老师,如果做了响应拦截,是否还需要路由守卫呢?如果使用路由守卫?
作者回复: 其实也需要,因为请求拦截需要数据返回后,页面拦截可以在跳转之前,体验会更好
2021-11-2246 - coder还是没代码啊,非前端同学表示太难受了
作者回复: 现在代码都集中推到这个仓库里 https://github.com/shengxinjing/geektime-vue-course
2022-01-104 - cwang如果在任意一个页面里,我们想实现按钮级别的权限认证,那我们应该如何扩展我们的权限系统呢? 按钮级别的权限,是跟角色对应的。具体实现上,可以使用Vue自定义指令,但是某些情况自定义指令会很鸡肋,需要配合v-if 模板语法来实现。
作者回复: 大部分场景封装一个v-auth指令
2021-12-093 - 。。。希望结合一个项目从零到运用来结合讲解更能理解 这样太散了
编辑回复: 后面组件设计部分会带着大家用代码体验一下。
2021-12-022 - Bob大圣老师,这一节在https://github.com/shengxinjing/geektime-vue-course.git这个仓库里好像没有文中提到的代码,是还没有来得及更新吗?
作者回复: 这几天我赶完手写vue源码的稿子和代码后会更新一版
2021-12-1561 - 葱味黑咖啡"在页面刷新的时候,通过 src/router/index.js 入口文件中的 routes 配置,从 localStorage 中获取完整的路由信息"。 老师,有一个问题,路由对象的component可以存储在localStorage中吗?localStorage应该是只能存字符串吧,把路由信息json化之后,component也无效了,这个怎么解决
作者回复: localstorage或者网络接口中存储的权限数据,component保存的其实是字符串,也就是compoennt的名字
2021-12-01