Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    8

    Login con redirect diverso ad ogni utente

    Buon giorno a tutti,
    io NON SONO un programmatore e purtroppo mi ritrovo nella melma...
    Ad ogni modo.

    PROBLEMA: Ho un file login.aspx per l'autentificazione degli utenti registrati in un db access. Se le credenziali sono corrette gli utenti accedono ad una cartella riservata che nessun'altro può vedere. Al suo interno c'è un file web.config che impedisce a chi non è registrato di accedervi.

    Ora, fin qui tutto ok...il problema sorge ora, perchè ho la necessità estrema ed urgentissima di reindirizzare SOLO un utente in particolare ad una sottocartella della precedente area protetta.

    In pratica chiunque faccia il login accede all'area protetta vede ttuto tranne la sottocartella sopra citata. L'utente prescelto al contrario vede solo la sottocartella.

    Come posso fare????
    Chiedo aiuto!!!!!
    Grazie

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Mettiamo che l'utente che deve essere reindirizzato alla sotto-cartella abbia come username "admin".

    Puoi usare la stessa tecnica, mettendo nel web.config della sotto-cartella (si, un altro file web.config) il permesso di accesso soltanto per lui:
    codice:
        <authorization>
          <allow users="admin"/>
          <deny users="*" />
        </authorization>
    (prova i due ordini diversi di allow e deny, non ricordo la priorità)

    ...e nella pagina di arrivo dal login effettuare un redirect se è lui che ha fatto l'accesso:
    codice:
    If User.Identity.Name.ToString = "admin" then
       Response.Redirect("sottocartella/admin.aspx")
    End If

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    8
    Intanto grazie per la cortese risposta.

    Ora pr quanto riguarda il primo punto ci sono arrivato infatti il web.config dentro l'area riservata che si chiama CARTELLAPROTETTA ha il seguente codice:

    codice:
    <?xml version="1.0"?>
    <configuration>
      <system.web>
        <authorization>
          <deny users="?"/>
        </authorization>
      </system.web>
    
    <location path="PLUTO">
      <system.web>
        <authorization>
          <allow users="PLUTO"/>
            <deny users="*"/>
            </authorization>
      </system.web>
    </location>
    </configuration>
    Infatti in questo modo solo PLUTO può accedere o vedere la sotto cartella PLUTO

    Il problema ora sta nel reindirizzare. Ti allego il file login.aspx.cs dove c'è il reindirizzamento se l'utente ha effettuato il login.
    In pratica li dentro dovrei dirgli....se qualsiasi utente redirect to CartellaProtetta/Default.aspx

    Se utente PLUTO e solo PLUTO allora vai a CartellaProtetta/PLUTO/default.aspx

    codice:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class Login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
        protected void login1_Authenticate(object sender, AuthenticateEventArgs e)
        {
            if (Membership.ValidateUser(login1.UserName,login1.Password))
            {
    
                FormsAuthenticationTicket tkt;
                string cookiestr;
                HttpCookie ck;
                tkt = new FormsAuthenticationTicket(1, login1.UserName, DateTime.Now, DateTime.Now.AddMonths(12), login1.RememberMeSet, "user");
                cookiestr = FormsAuthentication.Encrypt(tkt);
                ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
                if (login1.RememberMeSet)
                    ck.Expires = tkt.Expiration;
                ck.Path = FormsAuthentication.FormsCookiePath;
                Response.Cookies.Add(ck);
    
                string strRedirect;
                strRedirect = Request["ReturnUrl"];
                if (strRedirect == null)
                    strRedirect = "CartellaProtetta/Default.aspx";
                Response.Redirect(strRedirect);
            }
            
        }
    }

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Originariamente inviato da ligend
    In pratica li dentro dovrei dirgli....se qualsiasi utente redirect to CartellaProtetta/Default.aspx
    Se utente PLUTO e solo PLUTO allora vai a CartellaProtetta/PLUTO/default.aspx
    prova:
    codice:
                string strRedirect;
                strRedirect = Request["ReturnUrl"];
                if (strRedirect == null) {
                   if (Ucase(User.Identity.Name.ToString) != "PLUTO") 
                    {
                      strRedirect = "CartellaProtetta/Default.aspx";
                    }
                    else
                    {
                      strRedirect = "CartellaProtetta/PLUTO/Default.aspx";
                    }
                }
                Response.Redirect(strRedirect);
    (con il converter)

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    8
    ...non ho capito dove inserire tale porzione di codice....sorry

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    devi inserire il codice che ti ho suggerito (con la doppia IF, nel post sopra) al posto di questo pezzo di codice:

    codice:
       string strRedirect;
       strRedirect = Request["ReturnUrl"];
       if (strRedirect == null)
           strRedirect = "CartellaProtetta/Default.aspx";
       Response.Redirect(strRedirect);
    scusa eventuali errori sintattici ma sono abituato a VB

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    8
    Capito...unica cosa mi da errore perchè dice che - Il nome 'Ucase' non esiste nel contesto corrente -

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    toglilo...non e' strettamente necessario, ma segui con il debug come si comporta

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    8
    Fatto e debuggato....altro errore


    Impossibile applicare l'operatore '!=' a operandi di tipo 'gruppo di metodi' e 'string'

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    ci devi mettere 'diverso', non so com'e' in C#. In VB è <>

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 © 2025 vBulletin Solutions, Inc. All rights reserved.