首頁  >  問答  >  主體

angular.js - 前後端分離(前後端mv*),前端如何處理授權需求(授權邏輯)呢?

前後端分離(前後端mv*)的情況下,前端如何處理授權邏輯?
(mv* 可能是mvc,也可能是mtv, 或是mvvm等等)

後端:

 BooksController
     indexAction()
     showAction($id)
     editAction($id)
         $book = Book::findOrFail($id);
         $user = Auth::user();
         //授权判断
         if ($user->hasRole/Permission('edit-book')) {
             //$acl->isAllowed($user, $book, 'edit-book')
             .....
             $book->price = Input::get('price');
             $book->save();
             ......
         }
         .......
         
     createAction()
     deleteAction($id)

後端的controller/action等操作通常使用acl/rbac等授權系統做出授權判斷。

問題是:
像Emberjs、Angularjs等前端mv*框架如何處理授權部分呢?
例如未登陸(瀏覽用戶)明確10篇文章, 登陸用戶明確更多內容。

方式1)像後端一樣,使用單獨的授權系統/授權邏輯來處理嗎?

方式2)把 授權邏輯判斷結果放到json資料裡面,回給前端,前端直接使用?

BooksController
    editAction($id){
        ...
        $book = ....;
        $user = Auth::user()/Null//;登陆用户或没有登陆的匿名游客用户;
        // 授权判断, 返回1或者0
        $canEdit = $user->hasPermission('edit-book');
                   $acl->isAllowed($user, $book, 'edit-book');   
        return new JsonResponse([
            'book'=>$book,
            'user'=>$user,
            'can_edit'=>$canEdit,
            ........
        ]);
    }

3)使用Emberjs這種和後端極為相似的前端mvc框架,尤其是有完整的ember-data類別orm元件的時候, 前端ember-data/model是不是要跟後端簡單映射一下就可以了? 安全問題的認證和授權2個部分如何處理的呢?

某草草某草草2684 天前537

全部回覆(1)我來回復

  • 高洛峰

    高洛峰2017-05-15 17:05:17

    接觸過的項目是使用"方式2)把授權邏輯判斷結果放到json數據裡面,返回給前端,前端直接使用?" 的,就是後端返回用戶擁有的權限,然後前端去做判斷,不過我感覺這樣的話安全性是不是就降低了,如果篡改了返回結果的話前端的權限就被破壞掉了,不過是在知道規則定義的情況下才可能。

    回覆
    0
  • 取消回覆