2013-02-07 3 views
0

J'ai une implémentation standard d'un modèle et dans tous les autres modèles il ne semble pas y avoir de redirection si la session a expiré, laissant l'utilisateur avec un message d'erreur.Rails concevoir l'autorisation d'ensemble sur plusieurs modèles

Par exemple, sur la page du profil de l'utilisateur s'il n'est pas connecté, il affichera simplement une erreur car l'utilisateur actuel n'existe pas.

Dois-je définir dans chaque modèle d'autoriser. Ou une meilleure solution, puis-je le définir dans le contrôleur d'application et le faire à l'échelle de l'application et simplement définir des pages publiques chaque fois que nécessaire?

Répondre

0

Si vous souhaitez qu'un contrôleur particulier vérifie si un utilisateur est connecté, vous devez utiliser authenticate_user de Devise! fonction. Voir exemple ci-dessous

class StuffController < ApplicationController 
    before_filter :authenticate_user! 
    def index 
    ..... more implementation 
    end 
end 

Si l'utilisateur n'est pas connecté, ils seront redirigés vers le formulaire de connexion, puis à la page souhaitée après une connexion réussie

0

Utilisez un avant filtre tel que before_filter :authenticate_user!. Placez-le dans votre contrôleur d'application. authenticate_user! est un assistant de conception, donc si vous voulez un comportement personnalisé, vous pouvez surcharger la méthode ou simplement écrire votre propre filtre en utilisant leur méthode d'assistance user_signed_in?.