Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Pagine protette

  1. #1

    Pagine protette

    Salve a tutti, sono nuovo e mi chiamo Tony.

    Ho un problema, ho creato delle pagine che permettono la registrazione di un utente.
    Il sito ha una pagina in una cartella dove solo i registrati possono farne accesso.
    Modificando il file web.config con le guide trovate sul forum ci sono riuscito.
    Praticamente, se clicco la pagina protetta mi reindirizza al login, se effettuo il login mi riporta alla pagina richiesta (FormsAuthentication.RedirectFromLoginPage(TextBox USERNAME.Text, true).

    Il problema è che nella pagina di login ho anche un link che apre un ulteriore pagina di registrazione quindi se clicco la pagina protetta mi reindirizza alla pagina login, se clicco su registrazione (che si trova nella pagina login) mi reindirizza alla pagina di registrazione, e dopo registrato NON mi porta più alla pagina protetta ma alla pagina default.aspx (non so perchè va a questa pagina per forza).

    Sapete se esiste un modo per farlo reindirizzare alla pagina protetta?


    Grazie in anticipo


  2. #2
    Quando entri nella pagina di registrazione assegna ad una variabile di sessione la pagina di provenienza:

    Session("from") = Request.UrlReferrer.AbsoluteUri

    in seguito, appena validato l'utente lo ricacci da doce è venuto con un redirect

    Response.Redirect(Session("from"))

    (da qualche parte ci deve essere un redirect alla HomePagem, Response.Redirect(Session("from")) va messo lì!)

    Se vi fossero ulteriori difficoltà, chiedi pure, sarò bel lieto d'aiutarti.

  3. #3
    Originariamente inviato da cmsaspnet.com
    Quando entri nella pagina di registrazione assegna ad una variabile di sessione la pagina di provenienza:

    Session("from") = Request.UrlReferrer.AbsoluteUri

    in seguito, appena validato l'utente lo ricacci da doce è venuto con un redirect

    Response.Redirect(Session("from"))

    (da qualche parte ci deve essere un redirect alla HomePagem, Response.Redirect(Session("from")) va messo lì!)

    Se vi fossero ulteriori difficoltà, chiedi pure, sarò bel lieto d'aiutarti.
    Grazie mille per la disponibilità.
    Allora prima di tutto devo dire che mi sei stato di grande aiuto e ti ringrazio di cuore.

    Solo qualcosa non so se va bene.

    Praticamente se clicco il link che punta alla pagina protetta mi reindirizza verso la pagina del login, quindi il codice "Session("from") = Request.UrlReferrer.AbsoluteUri" dovrei metterlo nel momento quando premo il link giusto?
    Quindi al link per andare alla pagina protetta scrivo
    Session("from") = Request.UrlReferrer.AbsoluteUri;
    Response.Redirect("paginaprotetta.aspx");
    e mi reindirizza a login.aspx.

    L'unico problema che è una banalità ma sono alle prime armi è che per associare il codice scritto sopra da un aspbutton è una semplicità unica per me, ma associarlo ad un link ahref come faccio?
    ho provato a mettere un onclick nomefunzione ma niente non riesco.

    Grazie ancora

  4. #4
    Session("from") = Request.UrlReferrer.AbsoluteUri lo devi mettere nell'evento load dellapagina di login

    In questo modo, se tu sei entrato in session perchè ti ci ha reindirizzato una pagina protetta, allora vi si memorizza la url della pagina che ci ci ha mandato

    Presumo quindi che la pagina di login abbia ad un certo punto una procedura di autenticazione associata alle evento click del bottone "Conferma" (o invio).

    Eseguita tale autenticazione va il rimando alla agina protetta di provenienza (quella che ti ha forzato il login qui dentro):

    If Session("from")<>"" Then
    Dim Redirect As String=Session("from")
    Session("from") = Nothing
    Response.Redirect(Session("from"))
    End If

    Comincia a fare questo e vedi come ti funziona.
    Occorrerebbe conoscere a fondo le caratteristiche del tuo sito, per capire se in alcuni casi tale procedura può avere dei bug ed eventualmente corregerli, eventualmente poi di suggerirò del codice per correggerli.

  5. #5
    Originariamente inviato da cmsaspnet.com
    Session("from") = Request.UrlReferrer.AbsoluteUri lo devi mettere nell'evento load dellapagina di login

    In questo modo, se tu sei entrato in session perchè ti ci ha reindirizzato una pagina protetta, allora vi si memorizza la url della pagina che ci ci ha mandato

    Presumo quindi che la pagina di login abbia ad un certo punto una procedura di autenticazione associata alle evento click del bottone "Conferma" (o invio).

    Eseguita tale autenticazione va il rimando alla agina protetta di provenienza (quella che ti ha forzato il login qui dentro):

    If Session("from")<>"" Then
    Dim Redirect As String=Session("from")
    Session("from") = Nothing
    Response.Redirect(Session("from"))
    End If

    Comincia a fare questo e vedi come ti funziona.
    Occorrerebbe conoscere a fondo le caratteristiche del tuo sito, per capire se in alcuni casi tale procedura può avere dei bug ed eventualmente corregerli, eventualmente poi di suggerirò del codice per correggerli.
    Allora mettendo

    Session("from") = Request.UrlReferrer.AbsoluteUri

    nella pageload del login , se prima ero in home, quando poi clicco login in session("form") trovo il percorso della home e fin qui sembra funzionare. Ma se clicco la pagina protetta che mi reindirizza al login in session("form") si salva solo l'ultimo indirizzo, cioè home
    Non riesce a prendersi l'indirizzo della pagina riservata.

    Per chiarimenti posto il codice che ho utilizzato per la pagina riservata:

    ho messo nella cartella RISERVATO il file AREARISERVATA.ASPX.

    Nella master page ho messo semplicemente

    Area riservata 1

    nel web.config ho messo questo:

    <system.web>
    <authentication mode="Forms">
    <forms name="FormAuth" loginUrl="login.aspx"/>
    </authentication>

    </system.web>
    <location path="riservato/areariservata.aspx">
    <system.web>
    <authorization>
    <deny users="?"/>
    </authorization>
    </system.web>
    </location>


    Quindi se clicco il link che punta direttamente all'area riservata, il web.config fa in modo che mi reindirizza alla login.aspx, solo che nel'evento page load, nella sessione form non riesce a mettere il percorso dell'area riservata ma solo l'ultimo, tipo home.aspx

  6. #6
    diciamo comunque che se si tratta di primo livello, cioè premo la pagina protetta e reindirizza al login, se mi loggo ritorna bene alla pagina protetta grazie a questo codice:

    FormsAuthentication.RedirectFromLoginPage(TextBoxU SERNAME.Text, true);

    Se si tratta di secondo livello, cioè clicco la pagina protetta che mi reindirizza al login e clicco registra che mi punta alla pagina registrazione, l'unico modo per far ritornare alla pagina protetta una volta registrato è salvare il percorso iniziale OGNI VOLTA che si preme il LINK della PAGINA PROTETTA:

    Session["from"] = "riservato/areariservata.aspx";
    Response.Redirect("riservato/areariservata.aspx");

  7. #7
    scusa i troppi messaggi, come scritto nell'ultimo messaggio, il quel modo che dico io funziona, solo che c'è un altro problemino.
    Se clicco il pulsante che mi fa andare alla pagina protetta

    Response.Redirect("riservato/areariservata.aspx");

    tutto ok ovviamente, ma se lo ripremo esce errore 404 perchè concatena l'indirizzo

    ..riservato/areariservata.aspx(ShoppingCartCSharp/riservato/areariservata.aspx



    Quindi o cerchiamo di risolvere senza dover utilizzare il mio metodo oppure risolviamo anche questo.

    Non riesco a trovare soluzioni. Spero possa aiutarmi

  8. #8
    No, hai fatto bene a scrivermi tutto questo pappardello perchè altrimenti mi era astratto ciò che stavi facendo e potevo andare solo per supposizioni.

    Diciamo che ci sono 2 tecniche per direzionare gli utenti alla pagina di login quando vanno sulle pagine protette e poi ributtarli li detro una volta loggati.

    La prima che ti ho suggerito usa il referer sulla pagina di login per memorizzare la provenienza e lo assegna ad una variabile si sessione , la quale verrà in seguito utilizzata per rispedire l'user loggato da dove è venuto.

    Tale tecnica per funzionare, necessita che i pulsanti di navigazione lato client siano dei link (tag 'a'), in quanto fondata sul referer.

    Tu invece hai dei bottoni che non sono dei link, ma generano un evento lato server il quale in taluni casi esegue un Response.Redirect. In tal caso la tecnica da impiegarsi è questa:

    Utente non loggato arriva nella pagina con contenuto protetto.
    La pagina viene negata e in automatico l'utente viene inviato alla pagina di login per autenticarsi.
    In questo caso devi passare nei parametri della url di log, la url della pagina di provenienza, in questo modo:

    ReturnUrl = HttpContext.Current.Request.Url.AbsoluteUri
    Response.Redirect("LoginPage.aspx?ReturnUrl=" & HttpUtility.UrlEncode(ReturnUrl))

    Il codice sopra messo nell'evento load della pagina protetta, nella parte in cui verifiche le credenziali del navigatore.

    Quel cotice invia il navigatore a loggarsi.

    Poi una volta autenticato l'user (nell pagina di log che io ho chiamato LoginPage.aspx), lo ributti da dove era arrivato in questo modo.

    If Request("ReturnUrl") <> "" Then
    Response.Redirect(Request("ReturnUrl"), True)
    End If

    Come vedi questa seconda tecnica non fa uso del referer di provenienza e della variabile di sessione, ed è quella che fa al caso tuo.

    Tienimi aggiornato, e fammi sapere se ti è chiaro.

    Se ti occorre un codice di esempio di autenticazione su pagine protette con i rimandi automatici, puoi anche scaricarti questo applicativo e dare un occhiata di come avviene ogni singolo passaggio nella pagina di login log.aspx: x
    Ciò che ti ho suggerito è essenzialmente ciò che ti occorre, se lo metti al posto giusto vedrai che ti funziona.

  9. #9
    la configurazione di default per la protezione delle pagine, prevede che quando tenti di accedere ad una pagina protetta, vieni rimandato alla pagina di login specificata nel web config in questo modo:
    codice:
    <authentication mode="Forms">
      <forms name=".auth" protection="None" path="/" loginUrl="~/Pagine/Login/loginPage.aspx" timeout="2880"/>
    </authentication>
    Quando vieni rimandato alla pagina "loginpage.aspx" l'url risulta essere questo:
    http://localhost:42678/Pagine/Login/...aProtetta.aspx

    Ovvero piene passato in querystring, il parametro "ReturnUrl" che identifica la pagina alla quale tornare dopo il login.
    Devi sfruttare dunque questo parametro.
    Lo puoi fare in diverse maniere:
    aggiungendo nuovamente il parametro al link per la pagina di registrazione, mettendo il valore in session, gestendo l'evento della pagina al momento dell'abbandono.

    La cosa più semplice potrebbe essere appunto memorizzarlo in Session. Quindi nell'evento Load della pagina loginPage.aspx:
    codice:
    protected void Page_Load(object sender, EventArgs e)
    {
        object ReturnUrlObj = Request.QueryString["ReturnUrl"];
        string ReturnUrlString = string.Empty;
        if (ReturnUrlObj != null && !string.IsNullOrEmpty(ReturnUrlObj.ToString()))
            ReturnUrlString = ReturnUrlObj.ToString();
        Session["ReturnUrl"] = ReturnUrlString;
    }
    Quindi, dalla pagina di registrazione:
    codice:
    protected void CreateUserWizard1_ContinueButtonClick(object sender, EventArgs e)
    {
        object ReturnUrlObj = Session["ReturnUrl"];
        string ReturnUrlString = string.Empty;
        if (ReturnUrlObj != null && !string.IsNullOrEmpty(ReturnUrlObj.ToString()))
            ReturnUrlString = ReturnUrlObj.ToString();
        CreateUserWizard1.ContinueDestinationPageUrl = ReturnUrlString;
    }
    fai solo attenzione che il tuo "CreateUserWizard1" abbia la proprietà LoginCreatedUser a True.

    ciao

  10. #10
    scusate il ritardo ho avuto altri problemi e li ho risoldi.
    Ok provo con i vostri consigli e vi faccio sapere grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.