angular.js - 前後端分離(前後端mv*),前端如何處理授權需求(授權邏輯)呢?
某草草
某草草 2017-05-15 17:03:17
0
1
534

前後端分離(前後端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個部分如何處理的呢?

某草草
某草草

全部回覆(1)
小葫芦

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!