[ASP.NET] Mee verzenden van Id na inloggen..

Pagina: 1
Acties:
  • 170 views sinds 30-01-2008

  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
Hallo mede .NETTERS :)

Ik heb een login page gemaakt (eentje die tot mijn verbazing ook nog eens werkt! :7) Deze pagina wordt geforceerd via de web.config en na het inloggen gaat de gebruiker door naar de default.aspx. (standaard toch? ;)) Hierbij wordt ook de gebruikersnaam meeverzonden.

Zie hier login.aspx:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<script runat="server">
    
    Function GetUser(ByVal naam As String, ByVal pass As String) As System.Data.DataSet
            Dim connectionString As String = "server='localhost'; user id='sa'; password=; Database='Database'"
            Dim sqlConnection As System.Data.SqlClient.SqlConnection = New System.Data.SqlClient.SqlConnection(connectionString)
    
            Dim queryString As String = "SELECT [InkoopGebruikers].* FROM [InkoopGebruikers] WHERE (([InkoopGebruikers].[Naam] = @Naam) AND ([InkoopGebruikers].[Pass] = @Pass))"
            Dim sqlCommand As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand(queryString, sqlConnection)
    
            sqlCommand.Parameters.Add("@Naam", System.Data.SqlDbType.Char).Value = naam
            sqlCommand.Parameters.Add("@Pass", System.Data.SqlDbType.Char).Value = pass
    
            Dim dataAdapter As System.Data.SqlClient.SqlDataAdapter = New System.Data.SqlClient.SqlDataAdapter(sqlCommand)
            Dim dataSet As System.Data.DataSet = New System.Data.DataSet
            dataAdapter.Fill(dataSet)
    
            Return dataSet
        End Function

        Sub Inloggen(Sender As Object, E As EventArgs)
    
        If Page.IsValid Then
            Dim userDS As New System.Data.DataSet
            userDS = GetUser(UserName.Text, UserPass.Text)
    
            If userDS.Tables(0).Rows.Count = 1 Then

                FormsAuthentication.RedirectFromLoginPage(UserName.Text, true)
            Else
                    Msg.Text = "Onvoldoende gegevens: Probeer opnieuw"
            End If
        End If
    End Sub
</script>

In de default.aspx is het de bedoeling dat de GebruikersId wordt weggeschreven samen met de datum en een documentId waarde van 0 (een soort statistieken)
default.aspx:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    Dim NewDate as DateTime = now
    
    Public Sub Page_Load(Sender As System.Object, E As System.EventArgs)
         Welkom.Text = "Hallo, " + User.Identity.Name
         Gebruiker.Text = User.Identity.Name
    
         Dim connectionString As String = "server=localhost'; user id='sa'; password=; Database='Database'"
         Dim sqlConnection As System.Data.SqlClient.SqlConnection = New System.Data.SqlClient.SqlConnection(connectionString)
   
         Dim queryString As String = "INSERT INTO [InkoopStatistieken] ([GebruikersId], [Date], [DocumentId]) VALUES (@GebruikersId, @Date, @DocumentId)"
         Dim sqlCommand As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand(queryString, sqlConnection)
   
         sqlCommand.Parameters.Add("@GebruikersId", System.Data.SqlDbType.Int).Value = "1" (hier forceer ik hem dus nog)
         sqlCommand.Parameters.Add("@Date", System.Data.SqlDbType.DateTime).Value = NewDate (Een Datetime var)
         sqlCommand.Parameters.Add("@DocumentId", System.Data.SqlDbType.Int).Value = "0"
   
         Dim rowsAffected As Integer = 0
         sqlConnection.Open
         Try
            rowsAffected = sqlCommand.ExecuteNonQuery
         Finally
            sqlConnection.Close
         End Try
    End Sub

Moet ik eerst een nieuwe SELECT maken? En zo ja, hoe kan ik uit die select de gebruikersId halen? Of kan ik User.Identity.Name aanpassen zodat deze de gebruikersId meezend?

Alvast bedankt!!

p.s. hoe kan ik trouwens die database connectie beter doen?

Webdeveloping... -counts to 10- Sigh...


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
Hoe bedoel je, een nieuwe select maken? Welke gegevens heb je precies uit die eerste pagina nodig in die 2de?
Kan je geen gebruik maken van sessie-objecten?

Die database connectie is idd niet zo goed. Je connectiestring staat in plain - text in je code en da's niet zo goed. Stel dat je webapp. crashet, dan kan het zijn dat die string (incl. wachtwoorden ed) naar het scherm gestuurd worden, en dat de gebruiker dus die wachtwoorden te zien krijgt.
Om dit op te lossen , kan je ook gebruik maken van de web.config.
Je maakt een tag 'appSettings' bij:

code:
1
2
3
<appSettings>
<add key="ConnectionString" value="server=localhost;user id=sa..../>
</appSettings


En dan kan je die connectiestring in je code als volgt ophalen:
code:
1
string connstr = ConfigurationSettings.AppSettings["ConnectionString"];

https://fgheysels.github.io/


  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
[Sleep Mode]
Oei, ik bedoelde INSERT i.p.v. SELECT :p
[/Sleep Mode]

Ik heb de gerbruikersId nodig. Hoewel de gebruikers de UserName en UserPass invoeren.. Is dit mogelijk?

[Noob Mode]
Hoe werkt zo een sessie-object?
[/Noob Mode]

Dit zal wel niet relevant zijn maar ik werk met DWMX en niet met VS.NET...

Webdeveloping... -counts to 10- Sigh...


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
_Rob schreef op 30 januari 2003 @ 15:52:
Ik heb de gerbruikersId nodig. Hoewel de gebruikers de UserName en UserPass invoeren.. Is dit mogelijk?
Als je checked of die gebruikersnaam en passwoord kloppen, moet je toch naar de databank gaan?
Dan kan je toch evengoed, als de combinatie username - pwd geldig is, het betreffende gebruikersid ook ophalen?
[Noob Mode]
Hoe werkt zo een sessie-object?
[/Noob Mode]
Check de MSDN documentatie.
Dit zal wel niet relevant zijn maar ik werk met DWMX en niet met VS.NET...

Get rid off it , and use VS.NET.

https://fgheysels.github.io/


  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
Gaat dit werken?
code:
1
2
3
ByVal GebruikersId As Int

sqlCommand.Parameters.Get("@GebruikersId", System.Data.SqlDbType.Char).Value = GebruikersId
Get rid off it , and use VS.NET.
Affirmative :D

p.s. ja ik ben idd een n00b met .NET

Webdeveloping... -counts to 10- Sigh...


Verwijderd

whoami schreef op 30 januari 2003 @ 15:39:
Die database connectie is idd niet zo goed. Je connectiestring staat in plain - text in je code en da's niet zo goed. Stel dat je webapp. crashet, dan kan het zijn dat die string (incl. wachtwoorden ed) naar het scherm gestuurd worden, en dat de gebruiker dus die wachtwoorden te zien krijgt.
Om dit op te lossen , kan je ook gebruik maken van de web.config.
Je maakt een tag 'appSettings' bij:

code:
1
2
3
<appSettings>
<add key="ConnectionString" value="server=localhost;user id=sa..../>
</appSettings


En dan kan je die connectiestring in je code als volgt ophalen:
code:
1
string connstr = ConfigurationSettings.AppSettings["ConnectionString"];
Dit is ALLEEN het beval als je <customErrors mode="RemoteOnly" /> wijzigt... dus standaard krijgen gebruikers nooit sourcecode te zien

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
Verwijderd schreef op 30 januari 2003 @ 16:08:
[...]

Dit is ALLEEN het beval als je <customErrors mode="RemoteOnly" /> wijzigt... dus standaard krijgen gebruikers nooit sourcecode te zien


't Is 't zelfde.
Op die manier staat je connectiestring wel op 1 centrale plaats, staat hij niet in je code zelf, en moet je hem maar op 1 plaats aanpassen.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
[nohtml]
_Rob schreef op 30 januari 2003 @ 16:04:
Gaat dit werken?
code:
1
2
3
ByVal GebruikersId As Int

sqlCommand.Parameters.Get("@GebruikersId", System.Data.SqlDbType.Char).Value = GebruikersId
Moet je ff testen heh.
Ik doe het altijd zo:
C# code
sqlCommand1.Parameters.Add ("@GebruikersId", SqlDbType.Int);
sqlCommand1.Parameters["@gebruikersId"].Value = id;[/code]
Trouwens, ik vermoed dat je Id veld (dat waarschijnlijk enkel een nummer bevat) alfanumeriek is. Waarom maak je dat niet numeriek?

https://fgheysels.github.io/


Verwijderd

Kan je niet makkelijker basic authentication in IIS aanzetten op de website.

  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
code:
1
2
3
4
5
6
7
8
Compiler Error Message: BC30203: Identifier expected.

Source Error:

Line 3:   
Line 4:     Function GetUser(ByVal naam As String, ByVal pass As String) As System.Data.DataSet
Line 5:     Dim connstr As string = ConfigurationSettings.AppSettings["ConnectionString"]; 
Line 6:     Dim sqlConnection As System.Data.SqlClient.SqlConnection = New System.Data.SqlClient.SqlConnection(connstr)


...Iemand?

[edit]
Waarom zit ik trouwens vast met lange codes en zie ik op internet overal simpelere manieren van een SQLconnectie? Of komt dat mee met VS.NET?

[ Voor 17% gewijzigd door _Rob op 30-01-2003 16:19 ]

Webdeveloping... -counts to 10- Sigh...


Verwijderd

Stukje code is volgens mij ok.

Verwijderd

Waarom schrijf jij trouwens complete namespaces op?

Zoals: System.Data.SqlClient.SqlConnection(connstr)

Als jij boven in je code de regel, Implements System.Data.SqlClient (dacht ik, in C# using System.Data.SqlClient), opneemt. Kan jij rechtstreeks de method SqlConnection aanroepen.

Scheelt een hoop code.

  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
Tja n00bs he ;)

Webdeveloping... -counts to 10- Sigh...


Verwijderd

ff na gezocht, het is trouwens het keyword Imports dat je moet gebruiken.
Voorbeeld:
Imports System.ComponentModel
Imports System.Drawing
Imports System.WinForms

  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
Ik heb nu dit:
code:
1
2
3
4
5
6
7
8
9
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">
 
    Function GetUser(ByVal naam As String, ByVal pass As String) As System.Data.DataSet
        Dim connectionString As string = ConfigurationSettings.AppSettings["ConnectionString"]; 
        Dim sqlConnection = New SqlConnection(connectionString)

Ik blijf die fout melding krijgen BC30203: Identifier expected bij: Dim connectionString As string = ConfigurationSettings.AppSettings["ConnectionString"];

edit:
Die identifier error begint me aaridg op de zenuwen te werken... Iemand een oplossing?


Allemaal alvast hardstikke bedankt!

[ Voor 16% gewijzigd door _Rob op 30-01-2003 17:13 ]

Webdeveloping... -counts to 10- Sigh...


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 24-08 15:16

gorgi_19

Kruimeltjes zijn weer op :9

Je mixt C# met vb.net....

Dim connectionString As string = ConfigurationSettings.AppSettings("ConnectionString")

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
Verwijderd schreef op 30 januari 2003 @ 16:15:
Kan je niet makkelijker basic authentication in IIS aanzetten op de website.


Neen, want dan worden usernames en wachtwoorden als plain text over het netwerk verstuurd. Niet echt veilig dus.
Trouwens, basic authentication of Challenge/Response doet hier niets terzake.

https://fgheysels.github.io/


  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
Goedemorgen allemaal! :z

Heb ik nog steeds het probleem dat ik geen Id kan meesturen. De gebruiker voert een gebruikersnaam en een wachtwoord in, is het mogelijk om in hetzelfde bestand (inlog.aspx) een Id op te vragen en mee te sturen? Zo ja, wat moet ik toevoegen aan de code?


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    Function GetUser(ByVal naam As String, ByVal pass As String) As DataSet

            Dim connectionString As String = ConfigurationSettings.AppSettings("ConnectionString")
            Dim sqlConnection = New SqlConnection(connectionString)
    
            Dim queryString As String = "SELECT * FROM InkoopGebruikers WHERE (([InkoopGebruikers].[Naam] = @Naam) AND ([InkoopGebruikers].[Pass] = @Pass))"
            Dim sqlCommand = New SqlCommand(queryString, sqlConnection)
    
            sqlCommand.Parameters.Add("@Naam", SqlDbType.Char).Value = naam
            sqlCommand.Parameters.Add("@Pass", SqlDbType.Char).Value = pass
    
            Dim dataAdapter = New SqlDataAdapter(sqlCommand)
            Dim dataSet = New DataSet
            dataAdapter.Fill(dataSet)
    
            Return dataSet
        End Function

        Sub Inloggen(Sender As Object, E As EventArgs)
    
        If Page.IsValid Then
            Dim userDS As New DataSet
            userDS = GetUser(UserName.Text, UserPass.Text)
    
            If userDS.Tables(0).Rows.Count = 1 Then

                FormsAuthentication.RedirectFromLoginPage(UserName.Text, true)
            Else
                    Msg.Text = "Onvoldoende gegevens: Probeer opnieuw"
            End If
        End If
    End Sub


Alvast bedankt!

Webdeveloping... -counts to 10- Sigh...


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
Zoals ik reeds gezegd heb, kijk eens naar die sessie objecten, of kijk eens hoe je een userid via de URL als parameter kan doorsturen. (Alhoewel ik dat laatste niet zou aanraden voor jouw geval).

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 24-08 15:16

gorgi_19

Kruimeltjes zijn weer op :9

Als je verder niets met de username doet, waarom gebruik je dan geen ID ipv de username in de FormsAuthentication.RedirectFromLoginPage

Ik neem aan dat je deze wel kan uitlezen uit de ID-column van je datatable

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • _Rob
  • Registratie: Januari 2003
  • Laatst online: 17-04 08:49
Hoe kan ik hem uit de datatable uitlezen? (Ik neem aan dat je userDS bedoelt)

Thanks!

Webdeveloping... -counts to 10- Sigh...


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
_Rob schreef op 31 January 2003 @ 12:38:
Hoe kan ik hem uit de datatable uitlezen? (Ik neem aan dat je userDS bedoelt)

Thanks!


Weet je wat je doet?
Neem eens de moeite om de MSDN of de .NET SDK documentation te bekijken en te gebruiken.
code:
1
DataRow dr = DataSet.Tables[0].Rows[0];

etc....

[ Voor 10% gewijzigd door whoami op 31-01-2003 12:52 ]

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.