2009-09-25 2 views
5

Je suis sur le site web de ASP.NET. Nous avons deux types de connexion 1. Les utilisateurs 2. AdministrateurComment pouvons-nous arrêter la page web après la connexion en utilisant le navigateur précédent

Je suis face à problème suivant lors des essais

Énoncé du problème: Supposons que je loggedIn par connexion utilisateur et surfer sur toutes les pages, laissez-dire à une page de l'utilisateur Je clique sur le bouton de déconnexion, il me redirigera à la page de connexion.

Maintenant, le problème vient quand j'utilise le navigateur de retour, il montre la page de l'utilisateur Mais dans la réalité, je ne devrais pas être en mesure d'afficher cette page après la déconnexion.

Ma fonctionnalité est correcte car si je clique sur la page après la déconnexion, elle me redirigera à la page de connexion, mais mon problème est que je ne devrais pas atterrir sur la page utilisateur en utilisant le navigateur après la déconnexion. [Comme dans Google et Yahoo]

Il en va de même avec la connexion Admin.

S'il vous plaît aidez-moi à régler les problèmes.

Répondre

1

Vous devez définir les éléments suivants, je suppose que

Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); 
Response.Cache.SetValidUntilExpires(false); 
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
Response.Cache.SetCacheability(HttpCacheability.NoCache); 
Response.Cache.SetNoStore(); 

Cela entraînera votre page republier également lorsque l'utilisateur appuie le bouton de retour et donc vous êtes en mesure de vérifier s'il est toujours connecté et au cas où le rediriger vers un autre endroit.

+0

Où dois-je écrire au-dessus des lignes de code? –

+0

puh ne l'a pas essayé maintenant, mais je voudrais le placer dans le PageLoad de Page où vous devez vérifier si l'utilisateur est connecté. Fondamentalement, la page qui sera affichée après que l'utilisateur clique sur le bouton de retour sur une autre page . – Juri

+0

Au moins mettre un commentaire si vous downvote ... – Juri

1

Vous devez désactiver le cache.

public void Page_Load() 
{ 
Response.Cache.SetCacheability(HttpCacheability.NoCache) 
... 
} 
0

Comment vous connectez/déconnectez-vous? Une méthode appropriée consiste à enregistrer les informations utilisateur dans une session lors de la connexion et à désactiver cette session lors de la déconnexion lors du test de la méthode PageLoad de chaque page si la session contient des informations valides ou non, sinon arrêt du chargement de la page. de cette façon, lorsque l'utilisateur se déconnecte et clique sur le retour de la session devrait être vide et il ne se chargera pas, et vous pouvez ensuite rediriger vers la page de connexion. répondre si vous avez besoin de code

3

Le problelm est les pages que vous pouvez appuyer pour mettre en cache. Vous pouvez demander à votre navigateur de TOUJOURS récupérer les pages du serveur à chaque fois.

Vous aurez besoin de générer tous les en-têtes suivants:

Pragma: no-cache 
Cache-Control: max-age=1 
Expires: Tue, 1 May 1985 01:10:00 GMT 

Le problème n'est pas tous les navigateurs prennent en charge toutes les options que vous devez inclure tous ces en-têtes pour assurer tous les navigateurs ne cache pas vos pages . L'autre raison d'avoir besoin de tous ces en-têtes est que dans certains cas, même si le navigateur respecte les en-têtes d'expiration, il peut y avoir un serveur proxy mal configuré entre vous et l'utilisateur qui cache encore les pages.

Dans ASP, vous voulez sans doute faire quelque chose comme ceci:

public void Page_Load() { 
    Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d); 
    Response.Expires = -1500; 
    Response.CacheControl = "no-cache"; 
    Response.Cache.SetETag(randomString); 
} 
+1

J'avais l'habitude d'avoir ce même problème. L'utilisation d'un en-tête etag aléatoire aide également. C'est à dire marquer la page comme une nouvelle ressource pour chaque téléchargement. – user162138

+0

Merci, Pouvez-vous m'aider, comment puis-je générer les caractères mentionnés ci-dessus? Spécialement dans ASP.NET –

+0

j'ai la page maître pour mon aspx. Le lien de déconnexion est disponible dans la page maître. Est-il nécessaire d'écrire au-dessus de la ligne de code à la fois dans master et aspx? Est-ce que cela fonctionne si je les écris uniquement dans la page maître? Quelle est la bonne approche? –