9
votes

Comment puis-je vérifier si l'utilisateur est anonyme ou connecté de JavaScript?

Je voudrais déterminer si l'utilisateur est connecté ou si ils sont simplement anonymes de JavaScript ...

J'ai trouvé Cette question , mais c'est le code PHP et je n'étais pas Je suis sûr s'il y a une variable de session appelée enregistrée_in qui est stockée sur la connexion ou si c'était juste quelque chose que la personne s'était mise en œuvre.

Quelqu'un sache comment je peux vérifier si l'utilisateur est connecté à partir de JavaScript, éventuellement à l'aide d'Ajax?

EDIT: Je cours ASP.NET MVC, désolé dolé devrait avoir spécifié

C'est ainsi que je puisse implémenter une connexion AJAX côté client. Lorsque la page se charge, j'ai besoin de savoir si l'utilisateur est connecté ou non pour que je puisse mettre en œuvre quelque chose de similaire à un Contrôle à l'aide de jQuery.

merci
Mat


2 commentaires

Votre page est-elle dans ASP, PHP, etc.?


J'ai édité ma réponse accordément à vos modifications.


7 Réponses :


6
votes

[Disclaimer] Depuis que je reçois tant de commentaires de personnes à ce sujet, je vais simplement dire cela: c'est une mauvaise pratique de le faire de cette façon, mais nous ne savons pas ce que l'affiche originale a l'intention de faire. Pour tout ce que nous savons, il a tout fait tout le reste à 100% correct et sécurisé, et demandait simplement s'il y avait un moyen de l'obtenir à partir de JavaScript. Ce que j'ai fait ci-dessous est fourni ma meilleure idée de comment accomplir ce qu'il a demandé. [/ Disclaimer]

Vous pouvez avoir votre PHP, ou quelle que soit la langue du backend que vous utilisez, définissez un cookie que vous pouvez ensuite lire avec JavaScript. P>

document.cookie


7 commentaires

Je ne vais pas descendre car c'est techniquement correct mais je devrais conseiller, c'est probablement faux! Les scripts clients ne devraient rien savoir sur la session, il doit être traité de manière traditionnelle côté serveur.


Vous êtes correct, le script client ne devrait pas savoir sur les trucs de session, mais la question de l'affiche originale demande comment accéder aux informations de JavaScript, à la réponse fournie prend en charge cela.


Ok, mais cela reste faux, si vous utilisez l'authentification de la Cuirieless, le seul moyen est de voir si l'URL a quelque chose en elle. Et si quelqu'un utilise un mode d'authentification personnalisé (par exemple, passe de la sessionID dans un champ caché), ni de cette manière, une bonne façon de faire face. La bonne chose à faire est de charger 2 script différents, un pour l'accès anonyme et celui de l'utilisateur authentifié. BTW, si le script affiche / masquez des choses importantes pour une raison de sécurité évidente (et une performance aussi) que la partie doit être générée côté serveur.


Kent, la question originale ne demandait pas si JavaScript était la voie à suivre lors de la vérification d'un utilisateur de la connexion à l'utilisateur, ni de gérer la sécurité de la sécurité ou de tout cela. Peut-être qu'il a une raison parfaitement bonne pour vouloir accéder à ces informations de JavaScript. Je viens de fournir une réponse à la question qu'il a posée.


Ce n'est certainement pas la voie à suivre. Si vous utilisez Cookie pour déterminer si l'utilisateur est connecté ou non, vous vous ouvrez à des attaques très faciles d'un pirate informatique. Il est extrêmement trivial pour que l'utilisateur modifie leur cookie afin qu'il semble que vous soyez connecté. S'il vous plaît ne faites pas cela.


Comment se fait-il le Sys.Services.Authentiservice a une méthode get_loggedin () pour vérifier si l'utilisateur est connecté à partir de JavaScript? Comment ça marche?


À propos de votre responsabilité de non-responsabilité: Après la modification de l'OP, il a dit qu'il ressemblerait à ceci: msdn.microsoft.com/en-us/library/... J'ai compris votre motivation (c'est pourquoi je ne vous ai pas bownvote;)) Mais même si votre solution est toujours incomplète, ASP.NET Laissons la session dans l'URL (Cookieless) comme PHP SESSID. Dans ce cas, vous ne trouveriez rien dans le cookie. (Nous pouvons exclure l'authentification personnalisée dans ce cas, après les modifications de l'OP) et si l'OP ferait quelque chose comme LogfeDInview à JavaScript, il fait quelque chose de mal;)



0
votes

Vous pouvez analyser le document.cookie.


1 commentaires

Ne fonctionnera pas avec des biscuits httponly, et même si ceux-ci n'étaient pas utilisés, il est toujours faux, car tout le monde peut commencer une session mais cela ne signifie pas qu'ils sont signés dans ... Enfin, JS ne devrait pas lire les cookies destinés à du côté serveur



10
votes

Vous ne pouvez pas lire les données de session sauvegardées de JavaScript.

Un moyen facile de le faire est de créer un JS var à partir de PHP (plus facile que la solution de cookies), comme celui-ci: xxx

alors que le JS vérifiera simplement l'indigène logfed_in var pour voir si l'utilisateur est connecté. xxx


3 commentaires

Si nous parlons de mauvaises pratiques (voir tous les commentaires sur ma réponse), celui-ci subit toutes les mêmes chutes. C'est toujours une variable côté client qui est facilement modifiée. Cependant, en ce qui concerne la question de l'affiche originale, celle-ci est tout aussi bonne.


absolument dangereux. Meilleur moyen: Vérifiez le côté serveur avec la demande HTTP Ajax lorsque l'action en a besoin (à pratiquement dans votre fonction JavaScript).


Une bonne réponse pour les débutants! vraiment



1
votes

Cela n'a aucun sens. Si un utilisateur est connecté, vous le savez sur le côté serveur. Donc, vous n'avez pas à vérifier si vous êtes connecté côté client.

- EDIT:

Après votre clarification, je ne peux que suggérer de vérifier sur le contrôleur si l'utilisateur est enregistré, si vous indiquez la vue normale, sinon vous montrerez une vue différente.

- Modifier l'aphorisme ajouté:

Certaines personnes, lorsqu'elles sont confrontées à un problème, pensez "je sais, je vais utiliser Ajax". Maintenant, ils ont au moins deux problèmes


0 commentaires

2
votes

Il s'agit d'une solution habituellement implémentée avec des langues côté serveur. Avec JS vous, au moins, pourrait définir dans son client un cookie où stockez ces informations.

Cependant, avec Ajax, vous devez avoir une page (E.g. check_login.jsp / .apsx, etc.) Où vérifier Si l'utilisateur est enregistré (accédant à une DB, une variable de session, etc.) et, si oui, revenez à JS (via JSON) que des informations et par exemple une lumière A DIV avec une couleur verte ... P>

Donc: p>

check_login.aspx code> -> retour retour des informations via intervention.write ("{user_logged: true}"); Code> P >

à partir de login.aspx code> dans votre code HTML avec JS, vous aurez un appel AJAX où votre xmlhttp code> est déjà une instance de xmlhttpequest code > Objet ... p>

var logged = JSON.parse(xmlhttp.responseText); // don't use eval
if(logged.user_logged)
document.getElementById("u_l").style.backgroundColor = "#00FF00";


0 commentaires

1
votes

Le meilleur moyen à mon avis est de le faire via Ajax.

Cela le fera. p>

fichier JS ... p>

    if(!isset($_SESSION['loggedin'])){

        $response = array(
            'r' => 'fail',
            'url' => '/home.php'
        );
    } else {

        $response = array(
            'r' => 'success',
            'msg' => 'Logged in'
        );
    }

    echo json_encode($response);
    exit;


0 commentaires

0
votes

Vous pouvez vérifier avec le code ci-dessous: xxx


0 commentaires