Har utvecklat en bostadssökartjänst där allt fungerar jättefint tills allt ska läggas in i en iframe. Då går det inte att logga in längre. Inget fel genereras men inloggnigssidan laddas bara om och man blir liksom kvar i entrén utan att bli insläppt. Har själv nyligen gjort en liknande variant av login med iframe, skulle vilja se lite kod.. så kanske jag kan hjälpa dig lite ;) Hej Linda! använder du dig av global.asax, web.config?!? Nu är jag ingen expert på vb.net men jag tycker det ser ut som jag gjort. Jag har även gjort motsvarande ändringar i Globa.asax.cs och anger rättigheter i web.config. Fredric, se där ja. I så fall är det kanske som jag misstänker... Men varför funkar det i Netscape då? Fredric, Hej! Fredric, Hej igen! Fredric, Jo, men problemet är att de har fler servrar/domäner.Problem med iframe och inloggning
Jag använder mig av rollbaserad inloggning med klassen FormsAuthenticationTicket.
Det verkar dock som det går att lösa om man petar lite med säkerhetsinställningarna i explorer så det verkar ha att göra med hur cookies hanteras av explorer (detta antagande är bara en halvvild gissning så den kan ni bortse från).
Känns detta igen och är det i så fall någon som har en lösning?
PS. Det funkar tydligen i Netscape. Har inte testat själv men en kollega har gjort det.
Tacksam för hjälp!Sv: Problem med iframe och inloggning
Sv: Problem med iframe och inloggning
Så här ser koden ut för inloggningen:
<code>
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,userId,DateTime.Now,DateTime.Now.AddMinutes(30),false,role);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName);
cookie.Value = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(cookie);
//skicka till sida som efterfrågades
if(Request.QueryString.Count != 0) {
Response.Redirect(Request.QueryString["ReturnUrl"]);
}
else {
Response.Redirect("Default.aspx");
}
</code>
Koden ser kanske inte helt självklar ut när man inte ser jela koden men det skulle ta för stor plats. Hoppas du förstår iaf.Sv: Problem med iframe och inloggning
så här gör jag
global.asax
<code>
Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
If Not HttpContext.Current.User Is Nothing Then
If HttpContext.Current.User.Identity.IsAuthenticated Then
If TypeOf HttpContext.Current.User.Identity Is FormsIdentity Then
Dim id As System.Web.Security.FormsIdentity = CType(HttpContext.Current.User.Identity, FormsIdentity)
Dim ticket As FormsAuthenticationTicket = id.Ticket
' Hämtar sparad data ur cookien och vilken behörighet personen har
Dim userData As String = ticket.UserData
Dim roles() As String = userData.Split(","c)
HttpContext.Current.User = New GenericPrincipal(id, roles)
End If
End If
End If
End Sub
</code>
login.ascx.vb
<code>
Conn.Open()
'sql string som kontrollerar om anvnamn och lösenordt finns i db och är korrekt
Dim strSQL As String = "SELECT anvgrupp FROM anvandare WHERE (((Anvandare.anvnamn)='" & txtanv.Text & "') AND ((Anvandare.losen)='" & txtPwd.Text & "'));"
Dim Cmd As New OleDbCommand(strSQL, Conn)
Dim Dr As OleDbDataReader = Cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
If Dr.Read() Then
'skapar cookie och skriver inte värderna till cookie:n, samt anger dess giltighetstid
ticket = New FormsAuthenticationTicket(1, txtanv.Text, DateTime.Now(), _
DateTime.Now.AddMinutes(30), spara.Checked, Dr.GetString(0))
strcookie = FormsAuthentication.Encrypt(ticket)
cookie = New HttpCookie(FormsAuthentication.FormsCookieName(), strcookie)
'om användren klickad i kom ihåg mig kommer det att loggas in automatisk.
If (spara.Checked) Then cookie.Expires = ticket.Expiration
cookie.Path = FormsAuthentication.FormsCookiePath()
Response.Cookies.Add(cookie)
'skickar användaren till sidan där det befann sig innan
Dim strRedirect As String
strRedirect = Request("ReturnURL")
If strRedirect <> "" Then
Response.Redirect(strRedirect, True)
Else
strRedirect = "default.aspx"
Response.Redirect(strRedirect, True)
End If
Else
'meddelande skrivs ut om anvnam/lösenord inte finns eller inte e giltigt
lblLoginMsg.Text = "Fel lösenord eller användarnamn"
End If
</code>
samt web.config där jag anger vad och vilka som skall ha behörighet var
du kan ju kolla på det och se om det är till ngn hjälp..
ascx filen inkluderar jag sedan i min grundsida (default.aspx) Sv: Problem med iframe och inloggning
Jag undrar om det kan ha att göra med dokumenten i de oilka framearna liggar på olika domäner?Sv: Problem med iframe och inloggning
En cookie kan <b>inte</b> delas mellan olika domäner. På sin höjd kan du dela den mellan olika subdomän. Anledningen till detta är rent säkerhetsmässiga.
//AndreasSv: Problem med iframe och inloggning
Sv: Problem med iframe och inloggning
Vilken version? Det har varit blockerat länge nu.. tycker det skulle låta som en säkerhetsbugg om det är en nyare version. I denna tråden diskuterades cookiesäkerhet lite kort [cookies?]
//AndreasSv: Problem med iframe och inloggning
Vet faltiskt inte vilken version det var eftersom det är en kollega som testat. Kan ha varit 4.xx (?)
Hur som helst - har du nån idé om det går att jobba sig runt detta?Sv: Problem med iframe och inloggning
Varför placera innehållet i en iFrame? Lite svårt att ge tips utan att veta exakt hur det ser ut. Din inlednade beskrivning sa t.ex inget om att det handlade om flera olika domäner.
//AndreasSv: Problem med iframe och inloggning
Ibland tror man att man sagt saker som inte sagt - sorry.
Idén med Iframe kommer från företaget som jag har byggt tjänsten åt. Det verkar lite dumt håller jag med om men jag antar att de har skäl (hoppas jag iaf). Gissar att sidan som länkar in "min" tjänst" inte har .net framework (?).
Jag har byggt detta som ett praktikuppdrag och jag visste inte att de lägger ut sina grejer på olika maskiner...Sv: Problem med iframe och inloggning
Den dystra verkligheten är att om du vandrar mellan olika sidor (på olika domän) så måste du logga in dig på varje sida om de nu kräver authentisering, eller försöka bygga ihop något som i den tråden jag hänvisade dig till.
Om du bygger en tjänst till ett företag, är det inte rimligt att denna tjänst hostas på företagets webbserver, under deras domän, så du kan skapa en säkerlösning?
//AndreasSv: Problem med iframe och inloggning
:-)
Tack för ditt engagemang!