찾다

 >  Q&A  >  본문

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个部分如何处理的呢?

某草草某草草2745일 전596

모든 응답(1)나는 대답할 것이다

  • 高洛峰

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

    제가 접한 프로젝트들은 "방법 2) 인증 로직 판단 결과를 json 데이터에 넣어서 프론트엔드로 돌려주는데, 프론트엔드에서 직접 사용하는 건가요? 즉, 백엔드에서 권한을 돌려준다는 건가요?" 사용자가 소유하고 프론트엔드에서 판단을 하는데, 이 경우 반환 결과가 변조되면 보안이 저하될 것 같은 느낌이 들지만, 이는 규칙 정의가 알려진 경우에만 가능합니다.

    회신하다
    0
  • 취소회신하다