webForumDet fria alternativet

web.config Forms Authentication

5 svar · 443 visningar · startad av MizzK

MizzKMedlem sedan juni 2003410 inlägg
#1

Har gjort en login med hjälp av web.config har jag satt upp regler för olika användare..användarna hämtas i db. Detta fungerar perfekt så länge man loggar in direkt på sidan man vill in på. (dvs om order är "låst" kommer en loginruta in och man loggar in den vägen)

Men jag använder mig av iframe och default.aspx fungerar som grund till allt. Jag placerar login rutan på min default.aspx sida under navigerings menyn.

Men när användre kommmer och loggar in på den loginrutan så ser det ut som om d är inloggade och logut rutan kommer(login/ut ligger på samma sida i olika paneler). Men sidorna inne i iframe fattar inte detta vilket innebär att man inte får tillgång till sidorna man bör får tillgång till.

ngn som vet vad detta kan bero på? eller ngt som arbeteat med forms Authentication och frames eller iframes.

PDahlenMedlem sedan apr. 2004778 inlägg
#2

Jag har två sajter och ett administrationsverktyg som använder Forms Authentication och frames. Funkar alldeles utmärkt.
Enda gången det inte har funkat var när jag på ett ställe skulle in i en SSL-skyddad del. Den delen hade inte exakt samma domännamn och då funkade inte authenticeringen längre.
Om sidorna i din iframe ligger i samma kataloger och inte anropas med några skillnader i url:en så ska det funka. Men om du t.ex. har gått in med https://www.sajt.se från början och kör hela länkar till din iframe, t.ex. http://sajt.se/ så funkar det inte.
När du är inloggad så kolla Egenskaper på både Loginsidan och sidan i din iframe.

MizzKMedlem sedan juni 2003410 inlägg
#3

hur har du gjort då? jag har allt liggande på min datorn kör iis här.. defult ligger i rooten mappen pizza, skyddad sida order.aspx ligger i samma mapp, wwwroot/pizza/admin.

PDahlenMedlem sedan apr. 2004778 inlägg
#4

Jag gör inget speciellt. Jag har rooten med vissa filer, jag har mappar med andra filer. Om jag t.ex. länkar från default.aspx använder jag "projmapp/project.aspx". Om jag länkar tillbaka använder jag "../default.aspx".
En skillnad från din lösning är dock att jag har alla skyddade filer i en mapp och så har jag skyddat mappen genom att ange den i webconfig

Hur ser dina länkar ut?

MizzKMedlem sedan juni 2003410 inlägg
#5

PDahlen eller ngn kan man få se login proceduren.. tror d e min som e fel på(login.aspx).. hittar heller ingen bra artikel hur man gör..

MizzKMedlem sedan juni 2003410 inlägg
#6

har löst föregående problemet nu! men har istället ett nytt problem.. den fattar inte vilken behörighet som användaren som loggar in har samt vilken användare som loggat in skrivs ej ut!

Har i db "tabell användare" som innehåller: anvNamn, lösenord och anvgrupp.

global.asax

 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 = HttpContext.Current.User.Identity, FormsIdentity()
                    Dim ticket As FormsAuthenticationTicket = id.Ticket
                  
                    Dim MyRoles(2) As String
                    MyRoles(0) = "admin"
                    MyRoles(1) = "user"
                                                          HttpContext.Current.User = New System.Security.Principal.GenericPrincipal(id, MyRoles)
                End If
            End If
        End If

Login.ascx

    Sub Login_Click(ByVal Src As Object, ByVal E As EventArgs)

        If Page.IsValid Then
            FormsAuthentication.Initialize()
            Dim ticket As FormsAuthenticationTicket
            Dim strcookie As String
            Dim cookie As HttpCookie

            Dim strConn As String = ConfigurationSettings.AppSettings("Connstr").Replace("%MAPPATH%", Server.MapPath(" "))
            Dim Conn As New OleDbConnection(strConn)
            Conn.Open()

            Dim strSQL As String = "SELECT losen FROM anvandare WHERE anvnamn = '" & txtanv.Text & "'"
            Dim Cmd As New OleDbCommand(strSQL, Conn)

            Dim Dr As OleDbDataReader = Cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection)

            If Dr.Read() Then
                ticket = New FormsAuthenticationTicket(1, txtanv.Text, DateTime.Now(), _
          DateTime.Now.AddMinutes(30), spara.Checked, "your custom data")
                strcookie = FormsAuthentication.Encrypt(ticket)
                cookie = New HttpCookie(FormsAuthentication.FormsCookieName(), strcookie)
                If (spara.Checked) Then cookie.Expires = ticket.Expiration
                cookie.Path = FormsAuthentication.FormsCookiePath()
                Response.Cookies.Add(cookie)

                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
                Response.Redirect("logon.aspx", True)
            End If

        End If

    End Sub

loggaut.ascx

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Me.IsPostBack Then
            lbluser.Text = HttpContext.Current.User.Identity.Name
        End If
    End Sub

    Sub Logout_Click(ByVal Src As Object, ByVal E As EventArgs)
        FormsAuthentication.SignOut()
        Server.Transfer("default.aspx")
    End Sub

var e felet?

131 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)