我正在构建一个应用程序,在我的应用程序中,我希望有一个管理员页面来管理用户菜单权限。这意味着假设我有以下菜单:
Products
-Add
-Edit
-View
-Delete
和
Users
-Add
-Edit
-View
-Delete
现在我希望用户A只能看到并转到:
Products:
-View
和
Users:
-View
其他菜单项将不可见且用户A无法访问。
我打算做的是在我的数据库中为此创建表格:
menu_groups
-id
-name
-description
menu_items
-id
-menu_group_id
-name
-state
-description
菜单组表格将包含所有顶级菜单项,在本例中为:产品和用户。
菜单项目表将保存子菜单项:例如。添加,编辑,查看,删除
现在当应用程序加载我计划检查用户权限,然后从数据库加载这些菜单项,显示然后缓存它们。显然,我会在服务器上的那些路由上放置一个过滤器/中间件或者它所调用的任何内容,这样就没有人可以绕过它了。
我现在的问题是,这是正确的做法吗?在安全性,效率等方面还是有另一种简单的方法来实现这一目标吗?
我的数据库使用 mysql ,我的服务器使用 laravel-5 ,客户端使用angularjs。
答案 0 :(得分:1)
我做了类似于我的应用程序,这是一个很好的解决方案。当用户尝试访问我网站上的禁止部分时,laravel会返回401错误,我会在拦截器的角度应用程序中自动捕获该错误。
$httpProvider.interceptors.push(function() {
return {
'responseError': function(rejection) {
if(rejection.status === 401) {
//Redirect to login, show error etc.
}
};
});