7
votes

Itinéraire basé sur la stratégie Sailsjs avec vue

J'essaie d'utiliser le routes.js code> pour définir un itinéraire vers '/ compte' code>.

Je veux que celui qui tente d'accéder à ce chemin d'accès Passez à travers le UserController Code> et l'action CheckLogin Code> et si la vérification de la sécurité passe, l'utilisateur doit être rendu avec la vue définie qui est home / compte code > p>

voici mon code: p>

routes.js: p> xxx pré>

stratégies.js: p>

UserController: {
    '*': 'isAuthenticated',
    'login': true,
    'checkLogin': true
  }


1 commentaires

Question rapide: Il semble que vous essayez de mettre la logique de stratégie dans le contrôleur (à partir du son du nom "Checklogin", c'est exactement ce qui devrait être fait dans la stratégie isauthenticiated), avez-vous modifié cette politique?


3 Réponses :


5
votes

Pour le mettre court: le routage de contrôleur / style action ou de style d'action doit être utilisé dans le même itinéraire dans itinéraires.js , pas à la fois simultanément.

Selon le routeur's code source , une fois qu'il existe une propriété dans un objet d'itinéraire, des arrêts de liaison, de sorte que les voiles ne sient donc jamais à quel contrôleur votre page / compte doit être acheminée, ce qui signifie que votre < Code> USERCONTROLLER -PECIFIC POLITIQUE CONFLIGNE JAMAIS FILE.

Donc, il suffit de supprimer la propriété de l'itinéraire, vous pouvez toujours spécifier le chemin de vue (si vous souhaitez une non-standard) avec un rendu explicite de votre action.


0 commentaires

10
votes

Il semble y avoir une petite confusion sur la manière dont les politiques, les contrôleurs et les points de vue fonctionnent. Comme @bredikhin note ci-dessus, votre contrôleur ne sera jamais appelé car l'itinéraire est lié à une vue. Il est également important de noter que les stratégies ne peuvent pas être liées à des vues, seulement em> aux contrôleurs. La configuration correcte doit être quelque chose comme:

in config / routes.js code>: p> xxx pré>

in config / stratégies.js : P>

module.exports = {

  account: function(req, res) {

     res.view('home/account');

  }
}


1 commentaires

ceci 'votre contrôleur ne sera jamais appelé parce que la route est liée à une vue "est une partie très importante de cette réponse



1
votes

Pour que la statique fonctionne avec des stratégies, vous pouvez définir votre itinéraire avec contrôleur et action: xxx pré>

et définir la vue / la mise en page dans votre contrôleur: p>

index: function (req, res) {
    res.view('auth/login', { layout: 'path/layout' } );
},


0 commentaires