我正在创建一个具有许多角色的网站。
在我的模型中,用户角色是一个数组。因此,用户可以堆叠多个角色。

范例:

user.role = ['artist', 'premium'];


在用户情况下,用户可以创建一个项目并在创建时付款。它是免费的。

我的问题是:

管理高级职位的最佳实践是什么?

我考虑了两种释放方法:


在付款页面中,我用Auth.isPremium() === true进行检查。但是我认为这是一个非常糟糕的做法。
我为高级帐户创建了另一条路线。我将在路由提供者期间检查角色,如下所示:

$routeProvider.when('/project/:type', { templateUrl: 'app/project/form/form.html', controller: 'ProjectFormCtrl', access: { requiresLogin: true, requiredPermissions: ['premium'] }, })


我错了吗?

感谢前进!

最佳答案

所以我这样做了:

用户使用其数据查询以创建他的项目。
如果服务器响应402(需要付款),则用户必须为发布付费。

  $http.post('/projects', fd, option)
  .then(function (response) {
    $location.path('/');
  },function (response) {
    if (response.status === 402) {
      $scope.payment = true;
      $scope.error = response.data.message;
      $scope.stripe.publishable = ENV.stripePublishable;
    }
  });


我使用中间件检查高级帐户

    app.route('/projects')
    .post(users.requiresLogin, users.hasCredits, //check if premium
        multer({ dest: 'uploads/'}), projects.create);


因此,我为“付款和发布”创建了另一条路线。
支付是一种中间件。

   app.route('/projects/pay')
   .post(users.requiresLogin, projects.pay, users.hasCredits, //pay and check credits
        multer({ dest: 'uploads/'}), projects.create); // done

07-28 02:07
查看更多