Domanda

Vorrei determinare se l'utente ha effettuato l'accesso o se sono solo anonimi da javascript ...

Ho trovato questa domanda , ma è un codice php e non ero assicurati che ci sia una variabile di sessione chiamata logg_in che viene memorizzata al momento del login o se era solo qualcosa che quella persona si era implementata da sola.

Qualcuno sa come posso verificare se l'utente ha effettuato l'accesso da JavaScript, possibilmente usando Ajax?

Modifica: sto eseguendo Asp.Net MVC, mi spiace averlo specificato

Questo è così che posso implementare un login Ajax lato client. Quando la pagina viene caricata, devo sapere se l'utente ha effettuato l'accesso o meno, quindi posso implementare qualcosa di simile a un <asp:LoggedInView> controllo usando jquery.

Grazie,
Matt

È stato utile?

Soluzione

Non puoi leggere i dati salvati della sessione da JavaScript.

Un modo semplice per farlo è creare una var JS da PHP (più semplice della soluzione dei cookie), in questo modo:

if ($_SESSION['logged_in'] == 1) {
    echo '<script type="text/javascript">var logged_in=true;</script>';
} else {
    echo '<script type="text/javascript">var logged_in=false;</script>';
}

Quindi JS controllerà semplicemente la variabile logged_in nativa per vedere se l'utente ha effettuato l'accesso.

<script type="text/javascript">
    if (logged_in) {
        alert("My user is logged in!");
    }
</script>

Altri suggerimenti

[ESCLUSIONE DI RESPONSABILITÀ] Dato che ho ricevuto così tanti commenti da parte di persone su questa "cattiva pratica", dirò solo questo: è una cattiva pratica farlo in questo modo, ma non sappiamo cosa intende fare il poster originale. Per quanto ne sappiamo, ha fatto tutto il resto al 100% corretto e sicuro, e stava solo chiedendo se c'era un modo per ottenerlo da JavaScript. Quello che ho fatto di seguito è la mia migliore idea su come realizzare ciò che ha chiesto. [/ Disclaimer]

Puoi avere il tuo php, o qualunque sia la lingua di backend che stai usando, impostare un cookie che puoi quindi leggere con javascript.

document.cookie

semplice come quello. Dovrai cercare nella stringa del cookie il nome del cookie che hai effettuato l'accesso.

Puoi anche usarlo per impostare un cookie ed eseguire l'accesso tramite javascript (anche se probabilmente non è la migliore idea.)

Vedi qui per una rapida panoramica dell'accesso ai cookie javascript.

[modifica]

Per affrontare il problema di uno script client che ha accesso alle informazioni sulla sessione e il possibile uso di ajax suggerito nella domanda originale:

Sì, una chiamata Ajax sarebbe un modo molto semplice per verificarlo. Sono più un tipo jQuery, quindi la mia esperienza ajax sta lì, ma in sostanza, faresti una chiamata ajax alla tua funzione di back-end, e quella funzione di back-end controlla semplicemente la variabile di sessione 'login', restituendo un vero o falso.

Inoltre, poiché hai ora menzionato che stai utilizzando jQuery, vedi questa pagina per facile accesso ai cookie jQuery. [/ Modifica]

Questa è una soluzione generalmente implementata con linguaggi lato server. Con JS tu, almeno, potrebbe impostare nel suo client un cookie in cui memorizzare tali informazioni.

Tuttavia con Ajax dovresti avere una pagina (ad esempio check_login.jsp / .apsx ecc.) dove controllare se l'utente è loggato (accede a un DB, una variabile di sessione ecc.) e in tal caso ritorna a JS (tramite JSON) tali informazioni e, ad esempio, illumina un DIV con un colore verde ...

& -

check_login.aspx gt; ritorna indietro le informazioni via Response.Write("{user_logged:true}");

da login.aspx nel tuo codice HTML con JS avrai una chiamata AJAX in cui xmlhttp è già un'istanza di XMLHttpRequest oggetto ...

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

Non ha alcun senso. Se un utente ha effettuato l'accesso, lo conosci sul lato server. Quindi non devi controllare se sei loggato sul lato client.

--EDIT:

Dopo il tuo chiarimento, posso solo suggerire di verificare sul controller se l'utente è registrato, in tal caso mostrerai la vista normale, altrimenti mostrerai una vista diversa.

- EDIT ha aggiunto Aforisma:

Alcune persone, di fronte a un problema, pensano & # 8220; lo so, userò ajax. & # 8221; Ora hanno almeno due problemi

Il modo migliore secondo me è farlo tramite Ajax.

Questo lo farà.

File JS ...

        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: 'check.php',
            success: function(d) { 
                if(d.r == "fail") {
                    window.location.href = d.url;
                } else {
                    console.log(d.msg);
                }
            }
        });

check.php

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

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

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

    echo json_encode($response);
    exit;

Puoi analizzare document.cookie.

Puoi verificare con il codice seguente:

if(jQuery('body').hasClass('logged-in')) {
 // add your jquery code
 }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top