J'utilise actuellement sean.js sur un projet. Tout semble bien, mais j'ai un problème avec le processus d'inscription. J'ai récemment mis en place une politique de back-end sur mes routes pour donner des autorisations à mes utilisateurs en fonction de leur rôle, quelque chose comme ceci:SEAN.js autologin après l'inscription et req.user.roles
exports.invokeRolesPolicies = function() {
acl.allow([{
roles: ['myRole'],
allows: [{
resources: '/some-route',
permissions: '*'
}]
}]);
};
exports.isAllowed = function (req, res, next) {
var roles = (req.user) ? req.user.roles : ['guest'];
// If an person is being processed and the current user created it then allow any manipulation
if (req.people && req.user && req.people.user && req.people.user.id === req.user.id) {
return next();
}
// Check for user roles
acl.areAnyRolesAllowed(roles, req.route.path, req.method.toLowerCase(), function (err, isAllowed) {
if (err) {
// An authorization error occurred
return res.status(500).send('Unexpected authorization error');
} else {
if (isAllowed) {
// Access granted! Invoke next middleware
return next();
} else {
return res.status(403).json({
message: 'User is not authorized'
});
}
}
});
};
J'ai utilisé le modèle qui est livré avec une SEAN qu'il utilise ACL pour définir les autorisations. Cette méthode fonctionne correctement lorsque vous vous connectez avec votre utilisateur. Le problème est que lorsque je crée un nouvel utilisateur à partir du formulaire d'inscription, il se connecte automatiquement sur le système mais ne reçoit pas les rôles et le fichier req.user.roles est nul. J'ai un processus quand après l'inscription l'utilisateur doit finir un autre formulaire pour tout définir, mais en raison du problème de rôle, la politique ne reconnaît pas le rôle et donne un rôle "invité" provoquant que je ne peux pas accéder à mes itinéraires . Si je me déconnecte après la connexion automatique de l'inscription, tout fonctionne correctement parce que les rôles sont réglés correctement.
Dois-je définir autre chose sur le serveur redis et comment? Ou que dois-je faire?