Ik heb een probleem met het redirecten van iemand die is ingelogd naar de pagina waar hij oorspronkelijk vandaan is gekomen.
De situatie moet als volgt worden:
Iemand klikt op een willekeurige plek op de site op inloggen -> hij vult het formulier in en klikt op de "login" knop -> zijn gegevens worden gevalideerd -> Validatie ok -> Auth waarden worden gezet ( FormsAuthentication.SetAuthCookie( naam, false ) ) -> De gebruiker wordt terug gestuurd naar de pagina waar hij vandaan kwam.
Nu zit het probleem hem in het volgende (vermoed ik), ik heb namelijk het login formulier als control geinclude in de aspx file. Zodra er op submit wordt geklikt wordt de login-formulier.ascx opnieuw geladen met als gevolg dat de "referer" informatie foetsie is
(waardoor de FormsAuthentication.RedirectFromLoginPage() ook niet werkt)
De code van de ascx file is nu zo: (heb de html eruit gelaten)
Mijn idee hierachter was dat hij de eerste keer dat de ascx geladen wordt de variabele "url" aanmaakt en hem daarna met rust laat. Maar op de een oftandere manier vergeet hij de url volledig?
De situatie moet als volgt worden:
Iemand klikt op een willekeurige plek op de site op inloggen -> hij vult het formulier in en klikt op de "login" knop -> zijn gegevens worden gevalideerd -> Validatie ok -> Auth waarden worden gezet ( FormsAuthentication.SetAuthCookie( naam, false ) ) -> De gebruiker wordt terug gestuurd naar de pagina waar hij vandaan kwam.
Nu zit het probleem hem in het volgende (vermoed ik), ik heb namelijk het login formulier als control geinclude in de aspx file. Zodra er op submit wordt geklikt wordt de login-formulier.ascx opnieuw geladen met als gevolg dat de "referer" informatie foetsie is
De code van de ascx file is nu zo: (heb de html eruit gelaten)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
| <%@ Control Language="VB" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="microsoft.Data.Odbc" %>
<script runat="server">
sub page_load( o as object, e as eventargs )
if not Page.IsPostback then
dim url as String
dim raw_url = Request.Headers.Get( "Referer" )
url = raw_url.toString
response.write( "URL= " & url )
end if
end sub
Sub but_login_Click(sender As Object, e As EventArgs)
Dim objConn as new ODBCConnection ("DRIVER={
MySQL ODBC 3.51 Driver};Server=localhost;Port=3306;Option=147992;
Database=Begeer;Uid=admin;Pwd=admin;")
'Plaats hier de benodigde code voor deze pagina
dim tmp as integer
if gebruikersnaam.Text <> string.empty AND wachtwoord.Text <>
string.empty then
Dim naam as String
Dim password as String
dim query_login as String = "select admin_password,
admin_naam from admin where
admin_naam = '"& gebruikersnaam.Text &"'
and admin_password = '" & wachtwoord.Text & "'"
Dim readerSelect1 As OdbcDataReader
Dim objSelect1 as new OdbcCommand ( query_login, objConn)
objConn.Open()
'de select wordt ingelezen
readerSelect1 = objSelect1.ExecuteReader()
if readerSelect1.Read() then
' Open de reader
try
' Handle Non-Empty SELECT
naam = readerSelect1("admin_naam").ToString
password = readerSelect1("admin_password").ToString
lbl_error.Text=""
lbl_error.Visible = false
FormsAuthentication.SetAuthCookie( naam, false )
response.redirect( url )
catch
' Handle Empty SELECT
lbl_error.Text="Query error!"
lbl_error.Visible = true
end try
else
'Query leverde geen resultaten op
lbl_error.Text="Onbekende gebruikersnaam/wachtwoord combinatie!"
lbl_error.Visible = true
end if
readerSelect1.close()
objConn.Close()
else
lbl_error.Text="U heeft niet alle velden ingevuld!"
end if
End Sub
</script> |
Mijn idee hierachter was dat hij de eerste keer dat de ascx geladen wordt de variabele "url" aanmaakt en hem daarna met rust laat. Maar op de een oftandere manier vergeet hij de url volledig?