/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
[.Net,c#] Validering af logon
Fra : Jesper Stocholm


Dato : 17-06-02 11:53

Jeg sidder og leger med noget logon-validering ... men jeg kan ikke få
det helt til at virke som jeg gerne vil.

Min kode er

21 private void Page_Load(object sender, System.EventArgs e)
22 {
23   if (!(Session["login"].ToString() == "1"))
24   {
25      Session["loginRedirect"] = Request.Url;
26      Response.Redirect("default.aspx");   
27   }
28   else
29   {
30        // something else
31   }
32 }

Ved succesfuld login sættes en session-variabel med koden:

Session["login"] = 1;

.... og det er den jeg gerne vil teste på.

Den fejl jeg får er (linie 23)

System.NullReferenceException: Object reference not set to an instance of
an object.

Og det kan jeg ikke helt forstå. Kan det passe, at jeg skal lave en
try/catch for at teste på om Session-variablen har en værdi eller ej ?

:)

--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

 
 
Tobias Hinnerup (17-06-2002)
Kommentar
Fra : Tobias Hinnerup


Dato : 17-06-02 13:08


"Jesper Stocholm" <jespers@stocholm.invalid> wrote in message
news:Xns923083077E5E9spamstocholmdk@130.226.1.34...
> Den fejl jeg får er (linie 23)
>
> System.NullReferenceException: Object reference not set to an instance of
> an object.
>
> Og det kan jeg ikke helt forstå. Kan det passe, at jeg skal lave en
> try/catch for at teste på om Session-variablen har en værdi eller ej ?

Det vil i hvert fald være konsistent med den måde det fungerer på i ASP
"classic".

/Tobias




Jesper Stocholm (18-06-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 18-06-02 10:03

Tobias Hinnerup wrote in news:aekjfl$iut$1@news.cybercity.dk:

>
> "Jesper Stocholm" <jespers@stocholm.invalid> wrote in message
> news:Xns923083077E5E9spamstocholmdk@130.226.1.34...
>> Den fejl jeg får er (linie 23)
>>
>> System.NullReferenceException: Object reference not set to an
>> instance of an object.
>>
>> Og det kan jeg ikke helt forstå. Kan det passe, at jeg skal lave en
>> try/catch for at teste på om Session-variablen har en værdi eller ej
>> ?
>
> Det vil i hvert fald være konsistent med den måde det fungerer på i
> ASP "classic".

aah ... det er ikke helt korrekt. Det er intet i ASP der forhindrer dig i
at lave et check som

if session("login") = "1" then
   ' something
end if

Hvis session-variablen ikke er sat (dvs. noget i retning af null), så
returnerer den blot falsk. Du behøver jo ikke at lave en

SELECT CASE isNull(session("login"))
   CASE true
   CASE false
END SELECT

(der ville modsvare try/catch i C#)

for at sikre at der ikke kommer en fejl.

:)

--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Tobias Hinnerup (19-06-2002)
Kommentar
Fra : Tobias Hinnerup


Dato : 19-06-02 09:15


"Jesper Stocholm" <jespers@stocholm.invalid> wrote in message
news:Xns9231704223E5spamstocholmdk@192.38.208.81...
> Tobias Hinnerup wrote in news:aekjfl$iut$1@news.cybercity.dk:
>
> >
> > "Jesper Stocholm" <jespers@stocholm.invalid> wrote in message
> > news:Xns923083077E5E9spamstocholmdk@130.226.1.34...
> >> Den fejl jeg får er (linie 23)
> >>
> >> System.NullReferenceException: Object reference not set to an
> >> instance of an object.
> >>
> >> Og det kan jeg ikke helt forstå. Kan det passe, at jeg skal lave en
> >> try/catch for at teste på om Session-variablen har en værdi eller ej
> >> ?
> >
> > Det vil i hvert fald være konsistent med den måde det fungerer på i
> > ASP "classic".
>
> aah ... det er ikke helt korrekt. [snip]

Prøv at køre koden herunder (eller test den på
http://www.hinnerup.net/tmp/session/)

<%@ Language = "vbscript" CodePage = 1252 LCID = 1030 %>
<% Option Explicit ' Force explicit variable declaration %>
<%

Session("asdf") = Nothing
If Session("asdf") = "1" Then
Response.Write "asdf"
Else
Response.Write "Damn, I was wrong..."
End If

%>

Så vidt jeg kan se vil det netop kræve en try/catch konstruktion at bruge.

/Tobias



Jesper Stocholm (20-06-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 20-06-02 12:41

Tobias Hinnerup wrote in dk.edb.internet.webdesign.serverside.asp:
> "Jesper Stocholm" <jespers@stocholm.invalid> wrote in message
> news:Xns9231704223E5spamstocholmdk@192.38.208.81...
> > Tobias Hinnerup wrote in news:aekjfl$iut$1@news.cybercity.dk:
> > > Det vil i hvert fald være konsistent med den måde det fungerer på i
> > > ASP "classic".
> >
> > aah ... det er ikke helt korrekt. [snip]
>
> Prøv at køre koden herunder (eller test den på
> http://www.hinnerup.net/tmp/session/)
>
> <%@ Language = "vbscript" CodePage = 1252 LCID = 1030 %>
> <% Option Explicit ' Force explicit variable declaration %>
> <%
> Session("asdf") = Nothing

jamen ... denne linier er jo lidt kunstig. Det jeg vil er at teste på om en
bruger er logget ind eller ej. Dette afgøres af en session-variabel. Derfor
vil jeg ikke komme til eksplicit at sætte en session lig Nothing ... højest
Null.

> If Session("asdf") = "1" Then
> Response.Write "asdf"
> Else
> Response.Write "Damn, I was wrong..."
> End If
> %>
> Så vidt jeg kan se vil det netop kræve en try/catch konstruktion at
bruge.

ikke hvis du ikke sætter din session lig Nothing (hvor kan man komme til at
gøre dette ifb med login-test ?)

Koden

<%@Language="VBScript"%>
<%
option explicit
session("id") = null
if session("id") = 1 then
   Response.Write "du er logget ind"
else
   Response.Redirect("login.asp")
end if
%>

Udviser _nøjagtig_ den opførsel jeg forventede (med og uden at sætte en
session-variabel lig Null) ... og som jeg kan se det, så behøver man dermed
ikke at _fange_ at en session evt ikke er sat med try/catch, når man tester
på om en bruger er logget ind eller ej. Det er nok blot at spørge om en
session har en bestemt værdi.

/Jesper Stocholm
http://stocholm.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jakob Andersen (17-06-2002)
Kommentar
Fra : Jakob Andersen


Dato : 17-06-02 13:50

Jesper Stocholm wrote:
> Ved succesfuld login sættes en session-variabel med koden:
> Session["login"] = 1;
> ... og det er den jeg gerne vil teste på.
> Den fejl jeg får er (linie 23)
> System.NullReferenceException: Object reference not set to an
> instance of an object.

Jeg vil gætte på at fejlen fremkommer når du din Session er udløbet, og
derfor er Session null/nothing.

Prøv at lege med noget ala dette:

object objLogin = Session["login"];
if (null != objLogin ) {
if( Session["login"].ToString() == "1"){
.......
}
}

--
Jakob Andersen



Jakob Andersen (17-06-2002)
Kommentar
Fra : Jakob Andersen


Dato : 17-06-02 13:51

Jesper Stocholm wrote:
> Jeg sidder og leger med noget logon-validering ... men jeg kan ikke få
> det helt til at virke som jeg gerne vil.

Tør man spørge hvorfor du ikke bruger Forms Authentication?

--
Jakob Andersen



Jesper Stocholm (18-06-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 18-06-02 11:35

Jakob Andersen wrote in news:aeklvo$cv4$1@sunsite.dk:

> Jesper Stocholm wrote:
>> Jeg sidder og leger med noget logon-validering ... men jeg kan ikke få
>> det helt til at virke som jeg gerne vil.
>
> Tør man spørge hvorfor du ikke bruger Forms Authentication?

fordi det login-system jeg skal lave skal kunne give forskellige brugere
forskellige rettigheder, og da jeg ikke er interesseret i at dele mine
sider op efter rettighed - men snarere funktionalitet - så kan jeg ikke
se, at Forms Authentication kan gøre det for mig.

Desuden er et login-system et rigtig godt eksempel til at komme godt
omkring i metoderne/mulighederne i et eller andet sprog, og da jeg
efterhånden har lavet disse til bevistløshed i reg. ASP, så er det
interessant at se, hvor godt det kan lade sig gøre at lave det i C#.

:)

--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Jakob Andersen (18-06-2002)
Kommentar
Fra : Jakob Andersen


Dato : 18-06-02 16:24

"Jesper Stocholm" <jespers@stocholm.invalid> wrote in message
news:Xns92317FDA7BAFDspamstocholmdk@192.38.208.81...
> fordi det login-system jeg skal lave skal kunne give forskellige brugere
> forskellige rettigheder, og da jeg ikke er interesseret i at dele mine
> sider op efter rettighed - men snarere funktionalitet - så kan jeg ikke
> se, at Forms Authentication kan gøre det for mig.

Det kan snildt laves med rollebaseret adgangskontrol (Rolebased
authentication)

> Desuden er et login-system et rigtig godt eksempel til at komme godt
> omkring i metoderne/mulighederne i et eller andet sprog, og da jeg
> efterhånden har lavet disse til bevistløshed i reg. ASP, så er det
> interessant at se, hvor godt det kan lade sig gøre at lave det i C#.

Det kan jeg se pointen i, "learning by doing" har aldrig skadet nogen

--
Jakob Andersen



Jesper Stocholm (18-06-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 18-06-02 19:24

Jakob Andersen wrote in news:aenj9p$see$1@news.cybercity.dk:

> "Jesper Stocholm" <jespers@stocholm.invalid> wrote in message
> news:Xns92317FDA7BAFDspamstocholmdk@192.38.208.81...
>> fordi det login-system jeg skal lave skal kunne give forskellige
>> brugere forskellige rettigheder, og da jeg ikke er interesseret i at
>> dele mine sider op efter rettighed - men snarere funktionalitet - så
>> kan jeg ikke se, at Forms Authentication kan gøre det for mig.
>
> Det kan snildt laves med rollebaseret adgangskontrol (Rolebased
> authentication)

aah ... når man ikke ved, hvad det hedder, så er det gevaldigt svært at
tewake en forespørgsel på google til at returnere brugbare resultater.

:)

>> Desuden er et login-system et rigtig godt eksempel til at komme godt
>> omkring i metoderne/mulighederne i et eller andet sprog, og da jeg
>> efterhånden har lavet disse til bevistløshed i reg. ASP, så er det
>> interessant at se, hvor godt det kan lade sig gøre at lave det i C#.

næeh ... ellers mister man hurtigt overblikket ... :)

I øvrigt virkede det med
if (null == Session["someName"])
{}

.... havde forgæves søgt på isNull() eller lignende, men intet fundet.

:)

--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Kim Bach Petersen (19-06-2002)
Kommentar
Fra : Kim Bach Petersen


Dato : 19-06-02 07:41

> > Det kan snildt laves med rollebaseret adgangskontrol (Rolebased
> > authentication)
> aah ... når man ikke ved, hvad det hedder, så er det gevaldigt svært at
> tewake en forespørgsel på google til at returnere brugbare resultater.

Selv har jeg nok haft mest glæde af denne artikel fra MSDN-magazine:

http://msdn.microsoft.com/msdnmag/issues/02/05/ASPSec2/print.asp

Kim



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste