Avatar billede websam Nybegynder
16. april 2005 - 11:00 Der er 27 kommentarer og
1 løsning

Sessions i .net ?

hejsa,

Jeg sidder og er ved at lave noget login og ville gerne smide 2 sessions, 1 med id og 1 med bruger nievau. men det ser ud til at jeg ikke kan bruge sessions i en class fil, men jeg kan godt på en aspx fil, er der noget jeg mangler at gøre for at få det til at virke i en class fil ?

/Websam
Avatar billede arne_v Ekspert
16. april 2005 - 11:15 #1
HttpContext.Current.Session

måske
Avatar billede websam Nybegynder
16. april 2005 - 11:18 #2
Altså forstået på denne måde ?

HttpContext.Current.Session("Test") = "Test"

/Websam
Avatar billede arne_v Ekspert
16. april 2005 - 11:20 #3
hvis det er der som du vil
Avatar billede websam Nybegynder
16. april 2005 - 11:22 #4
Helt nødagtigt vil jeg dette :

Public Shared Function GetLogin(ByVal User As String, ByVal Pass As String)
    Dim objComm = New SqlCommand
    objComm.CommandText = "Select Id, Userlevel From tbl_user_login Where (Username = User And Password = Pass)"

    Dim Rs As SqlDataReader
    Rs = objComm.ExecuteReader
    If Rs.HasRows Then
        Do While Rs.Read
            HttpContext.Current.Session("Login") = True
            HttpContext.Current.Session("UserId") = Rs("Id")
            HttpContext.Current.Session("UserLevel") = Rs("Level")
            Return True
        Loop
    Else
            Return False
    End If
End Function

/Websam
Avatar billede arne_v Ekspert
16. april 2005 - 11:24 #5
prøv og se om ikke det virker

husk at beskyt dig mod SQL injection
Avatar billede websam Nybegynder
16. april 2005 - 11:25 #6
Da jeg forsøger mig med at bygge op omkring ideen med et data lag, buisness lag og design lag.

/Websam
Avatar billede websam Nybegynder
16. april 2005 - 11:25 #7
og hvordan gør jeg det ?

/Websam
Avatar billede arne_v Ekspert
16. april 2005 - 11:26 #8
nemmeste : parameters
Avatar billede websam Nybegynder
16. april 2005 - 11:27 #9
Kan du give et eksempel ?

/Websam
Avatar billede arne_v Ekspert
16. april 2005 - 11:42 #10
objComm.CommandText = "Select Id, Userlevel From tbl_user_login Where (Username = @User And Password = @Pass)"
objComm.Parameters.Add("@User", SqlDbType.VarChar)
objComm.Parameters.Add("@Pass", SqlDbType.VarChar)
objComm.Parameters("@User").Value = User
objComm.Parameters("@Pass").Value = Pass

vil jeg tro
Avatar billede websam Nybegynder
16. april 2005 - 11:44 #11
Ok på den måde og det sikre 100% mod injections ?

/Websam
Avatar billede websam Nybegynder
16. april 2005 - 11:45 #12
Og det sig også gældende ved insert og update ?

/Websam
Avatar billede arne_v Ekspert
16. april 2005 - 11:47 #13
ja (så vidt jeg ved)

ja
Avatar billede websam Nybegynder
16. april 2005 - 12:22 #14
Jeg får en fejl der lyder som følger :

ExecuteReader: Connection property has not been initialized.

Og det tyder jo på at jeg ikke har forbindelse til databasen. Til har jeg lavet følgende med det virker sikkert ikke.

Public Shared Function SqlConnect() As IDbConnection
    Dim Conn As SqlConnection
    Dim Sql As String = "Data Source=NEWAGE-SQL;Initial Catalog=Asp-Classes;User Id=PortalUser;Password=trolddom;"
    Conn = New SqlConnection(Sql)
    Conn.Open()
End Function

kan du hjælpe med det ?
Avatar billede arne_v Ekspert
16. april 2005 - 13:11 #15
Public Shared Function SqlConnect() As IDbConnection
    Dim Conn As SqlConnection
    Dim Sql As String = "Data Source=NEWAGE-SQL;Initial Catalog=Asp-Classes;User Id=PortalUser;Password=trolddom;"
    Conn = New SqlConnection(Sql)
    Conn.Open()
    SqlConnect = Conn ' <----skal den her ikke være der
End Function

sammen med en

objCommand.Connection = SqlConnect
Avatar billede websam Nybegynder
16. april 2005 - 13:19 #16
Cool takker for hjælpen det ser ud til ta jeg kan logge på og at session virker ganske fint, smid et svar :o)

/Websam
Avatar billede websam Nybegynder
16. april 2005 - 13:23 #17
En lille en mere hvorfor bliver værdien for brugernavn og password ikke slette i textbox ?

/Websam
Avatar billede arne_v Ekspert
16. april 2005 - 13:24 #18
Hm.

Så er nok ovre i noget postback/viewstate/etellerrandet som ligger over min viden
Avatar billede arne_v Ekspert
16. april 2005 - 13:24 #19
og et svar
Avatar billede burningice Nybegynder
16. april 2005 - 13:28 #20
websam>> hvis du prøver at lave en 3-tier model er det nok ikke pænt at hive fat i session helt nede i data-laget
Avatar billede websam Nybegynder
16. april 2005 - 13:30 #21
cyberfessor >> andre ideer til at sende userid og userlevel hvis de findes i databasen istedet for med sessions ?

/Websam
Avatar billede burningice Nybegynder
16. april 2005 - 13:45 #22
du bør lave en UserKlasse som indeholder de forskellige informationer du har brug for (UserId, Userlevel) og returnere det object fra datalaget op i dit businesslag som så sørgede for at gemme det i session.
Avatar billede websam Nybegynder
16. april 2005 - 13:48 #23
cyberfessor >> Og kan du give et eksempel på det ud fra min kode ovenfor, jeg er ret grøn i det her .net

arne_v >> Har løst textbox issue ved at redirecte efter buttonclick.

/Websam
Avatar billede burningice Nybegynder
16. april 2005 - 13:59 #24
public class User {
  public int Id;
  public int Level;
}

Dit datalag:

public User GetUser(string user, string pass) {

    ....

    User u = null;
   
    SqlDataReader rs = objComm.ExecuteReader(CommandBehavior.CloseConnection);
    if (rs.Read()) {
      u = new User();
      u.Id = (int)rs["UserId"];
      u.Level = (int)rs["UserLevel"];
    }
   
    rs.Close();

    return u;
}

Dit BusinnesLag:


public User User {
  get {
        object o = HttpContext.Current.Session["user"];
        if (o == null) return null;
        else return (User)o;
}

public bool ValidateUser(string user, string password) {
    DataLag dl = new DataLag();

    User u = dl.GetUser(user, password);

    if (u == null) return false;
    else {
      HttpContext.Current.Session["user"] = u;
      return true;
    }
}
Avatar billede websam Nybegynder
16. april 2005 - 14:09 #25
Ok jeg prøver lige om jeg kan for det oversat til vb :o)

/Websam
Avatar billede burningice Nybegynder
16. april 2005 - 15:37 #26
Avatar billede websam Nybegynder
16. april 2005 - 16:02 #27
så fik jeg det oversat men du laver kun en session nemmelig :

HttpContext.Current.Session["user"] = u

Ideen var jo at jeg skulle have fat i både UserId Og UserLevel ?

/Websam
Avatar billede burningice Nybegynder
16. april 2005 - 16:10 #28
jo, men læg mærke til at jeg gemmer hele User-objectet i sessionen. De enkelte værdier er gemt inde i dette object:

User u = (User)Session["User"];

int id = u.Id;
int level = u.Level;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester