Comment le front-end gère-t-il la logique d'autorisation lorsque le front-end et le back-end sont séparés (front-end et back-end mv*)??
(mv* peut être mvc, mtv ou mvvm, etc.)
Back-end?:
BooksController
indexAction()
showAction($id)
editAction($id)
$book = Book::findOrFail($id);
$user = Auth::user();
//授權(quán)判斷
if ($user->hasRole/Permission('edit-book')) {
//$acl->isAllowed($user, $book, 'edit-book')
.....
$book->price = Input::get('price');
$book->save();
......
}
.......
createAction()
deleteAction($id)
Le contr?leur/action back-end et d'autres opérations utilisent généralement des systèmes d'autorisation tels que acl/rbac pour prendre des décisions d'autorisation.
La question est?:
Comment les frameworks front-end mv* comme Emberjs, Angularjs, etc. gèrent-ils la partie autorisation??
Par exemple, les utilisateurs non connectés (utilisateurs navigants) afficheront 10 articles et les utilisateurs connectés afficheront plus de contenu.
Méthode 1) Comme le backend, utiliser un système d'autorisation/une logique d'autorisation distincte pour gérer cela??
Méthode 2) Mettez le résultat du jugement logique d'autorisation dans les données json et renvoyez-le au front-end Le front-end peut-il l'utiliser directement ?
BooksController
editAction($id){
...
$book = ....;
$user = Auth::user()/Null//;登陸用戶或沒有登陸的匿名游客用戶;
// 授權(quán)判斷, 返回1或者0
$canEdit = $user->hasPermission('edit-book');
$acl->isAllowed($user, $book, 'edit-book');
return new JsonResponse([
'book'=>$book,
'user'=>$user,
'can_edit'=>$canEdit,
........
]);
}
3) En utilisant Emberjs, un framework mvc frontal très similaire au back-end, en particulier lorsqu'il existe un composant ORM complet de classe ember-data, les données/modèles ember front-end doivent-ils être simplement mappé avec le back-end ? Comment les parties authentification et autorisation des problèmes de sécurité sont-elles gérées??
Les projets avec lesquels j'ai été en contact utilisent "Méthode 2) Mettre les résultats du jugement logique d'autorisation dans les données json, les renvoyer au front-end, et le front-end l'utilise directement ?" les autorisations détenues par l'utilisateur, puis le front-end rend le jugement. Cependant, je pense que la sécurité sera réduite de cette manière si le résultat du retour est falsifié, les autorisations du front-end seront détruites, mais c'est le cas. possible uniquement si la définition de la règle est connue.