angular.js - 前后端分离(前后端mv*),前端如何处理授权需求(授权逻辑)呢?
某草草
某草草 2017-05-15 17:03:17
0
1
608

前后端分离(前后端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 데이터에 넣어서 프론트엔드로 돌려주는데, 프론트엔드에서 직접 사용하는 건가요? 즉, 백엔드에서 권한을 돌려준다는 건가요?" 사용자가 소유하고 프론트엔드에서 판단을 하는데, 이 경우 반환 결과가 변조되면 보안이 저하될 것 같은 느낌이 들지만, 이는 규칙 정의가 알려진 경우에만 가능합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿