Maison > Questions et réponses > le corps du texte
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();
//授权判断
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//;登陆用户或没有登陆的匿名游客用户;
// 授权判断, 返回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 ?
高洛峰2017-05-15 17:05:17
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.