菜单视图和权限

时间:2015-08-05 13:01:07

标签: angularjs laravel menu laravel-5

我正在构建一个应用程序,在我的应用程序中,我希望有一个管理员页面来管理用户菜单权限。这意味着假设我有以下菜单:

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。

1 个答案:

答案 0 :(得分:1)

我做了类似于我的应用程序,这是一个很好的解决方案。当用户尝试访问我网站上的禁止部分时,laravel会返回401错误,我会在拦截器的角度应用程序中自动捕获该错误。

$httpProvider.interceptors.push(function() {
    return {
        'responseError': function(rejection) {
            if(rejection.status === 401) {
                //Redirect to login, show error etc.
            }
        };
    });