Med asp.net är det enkelt att skapa en login sida som skyddar hemligsida.aspx. Så långt allt väl.
Men på hemilgsida.aspx vill jag också ha lite bilder som också ska skyddas. Bilderna ligger i samma mapp, ungefär www.minsida.se/skyddad/bild.jpg
Problemet är att den enkla asp.net login metoden inte verkar funka för andra filtyper än .aspx. Hur skyddar jag ALLA filer i en mapp så att en icke inloggad användare hamnar på inloggningssidan istället för att se bilden?
Om det är av intresse: Jag har köpt min sajt av www.web10.se
I artikeln står det "...you will need access to Web server..." vilket är mitt problem; jag har inte access till servern. Jag måste (tror jag...) lösa det via asp.net kod och det har jag inte lyckats få svar på hur man gör.
Går inte.
Då får du lägga filerna i en mapp ovanför wwwroot så att de inte är tillgängliga via webben. Sedan får dina .aspx sidor öppna filerna genom att använda System.IO.
Går inte.
Då får du lägga filerna i en mapp ovanför wwwroot så att de inte är tillgängliga via webben. Sedan får dina .aspx sidor öppna filerna genom att använda System.IO.
Ok, det kan funka. Det gick bra att skapa en mapp ovanför wwwroot.
Jag har nu sökt på webben men inte funnit någon mer exakt information om hur jag kan använda system.io för att visa en bild som ligger ovanför wwwroot.
Rättar mig själv lite. För bilder använder du System.Drawing.Imaging.
Men i övrigt så kan du läsa på om t.ex. System.IO på MSDN.
Här är ett exempel som jag använder för att visa bilder:
Skapa ett nytt .aspx dokument, t.ex. ShowImage.aspx
I code-behind Page_Load lägger du
'Read in the image filename to create a thumbnail of
Dim imageID As String = Request.QueryString("fileid")
Dim imageUrl As String
' imageUrl brukar jag hämta i databas
' men här tar jag en url som jag skickat in
imageUrl = Request("bild")
'Get the image.
Try
'Make sure that the image URL doesn't contain any /'s or \'s
If imageUrl.IndexOf("/") >= 0 Or imageUrl.IndexOf("\") >= 0 Then
'We found a / or \
Response.End()
End If
'Add on the appropriate directory
' här måste man ange hela sökvägen till bilden
' mappen ligger utanför wwwroot som finns i
' c:/inetpub/wwwroot/
imageUrl = "c:/inetpub/minabilder/" & imageUrl
Dim fullSizeImg As System.Drawing.Image
fullSizeImg = System.Drawing.Image.FromFile(Server.MapPath(imageUrl))
Dim imgType = fullSizeImg.RawFormat
If imgType.Equals(System.Drawing.Imaging.ImageFormat.Gif) Then
Response.ContentType = "image/gif"
Else
Response.ContentType = "image/jpeg"
End If
fullSizeImg.Save(Response.OutputStream, imgType)
Catch
' här hamnar vi om bilden vi försökte öppna inte finns
' då tar jag en bild som jag vet finns, t.ex. en bild
' som det står "Bild saknas" på
imageUrl = "~/images/no_image.gif"
Dim fullSizeImg As System.Drawing.Image
fullSizeImg = System.Drawing.Image.FromFile(Server.MapPath(imageUrl))
Dim imgType = fullSizeImg.RawFormat
If imgType.Equals(System.Drawing.Imaging.ImageFormat.Gif) Then
Response.ContentType = "image/gif"
Else
Response.ContentType = "image/jpeg"
End If
fullSizeImg.Save(Response.OutputStream, imgType)
End Try
När du sedan ska visa en bild så skapar du en asp:Image och lägger ImageUrl="showimage.aspx?bild=minbild.jpg"