javascript - 如何在 SPA 中处理角色/权限(Laravel+Vue)

标签 javascript laravel vue.js single-page-application laravel-authorization

我听到很多关于 SPA 的议论,所以我想让我们试一试,然后我开始使用 Laravel+Vue 开发一个 SPA 项目。

我开始在 axios 和 vue-router 的帮助下制作一些 CRUD。一切都很顺利,直到我需要授权用户并根据他们的 Angular 色做出决定。我意识到现在我没有服务器端渲染( Blade 指令)的优势,我将不得不在 vue 端工作来管理 Angular 色/权限等。但我不知道我该如何处理。 .. 最佳实践是什么...是否有任何需要注意的陷阱...等等

所以我开始了我的研究和我从 here 中收集到的东西, there , 和 there是我必须将数据存储在 JS 对象或 localStorage 中才能执行如下操作:

<p v-if="Laravel.user.role == 'admin'"> Confidential Data </p>

<p v-else> Unimportant Information </p>

但是,如果实际上不是管理员而是版主的用户在控制台中执行此 Laravel.user.role.push('admin') 怎么办?那些敏感数据不会暴露给他吗?

本地存储也可用:localStorage.getItem('user.role')

那么处理这种情况的安全/标准/最常用方法是什么?

最佳答案

我认为最好的方法是在 Vuex 中存储数据,如果你使用商店,或者你可以使用原型(prototype)并使用 Vue.prototype.$userPerms = axios.get() 并且你将能够在每个组件中使用 this.$userPerms .

但是保护数据的最好方法是 API 不能返回用户看不到的数据。因此,如果有人以某种方式破解了他的 Angular 色。他仍然看不到数据,因为它不是由 API 返回的。

关于javascript - 如何在 SPA 中处理角色/权限(Laravel+Vue),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51535071/

相关文章:

laravel - 将数据从 PHP Twig 传递到 Vue 组件

javascript - 需要使用 jquery 或 javascript 的元素的父索引

javascript - 将 dojoAttachpoint 关联到动态创建的 div?

php - Laravel 8 中的备份数据库

unit-testing - Vue with jest - 使用异步调用进行测试

vue.js - 按下 ESC 键时关闭对话框

javascript - 调整视口(viewport)大小时输入框没有间隔( Bootstrap )

javascript - 将选项卡固定到页面顶部,但在标题下方

mysql - laravel 4 - 如何限制(采取和跳过) Eloquent ORM?

laravel,我如何忽略特殊路线?