Jump to content
jeansantos

IIS + Sessions

Recommended Posts

jeansantos

Desenvolvi uma aplicação ASP.net + VB.net em que tenho uma página de Login. Ao fazer login ele preenche uma session. Acontece que só consigo fazer Login uma vez. Para voltar a conseguir a fazer tenho de ir ao IIS, Session State e mudar o nome da Cookie.

Esta aplicação é para ser usada numa Intranet Multiposto. Gostaria de saber o que posso fazer para tentar solucionar este problema.

Share this post


Link to post
Share on other sites
jeansantos

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        SetFocus(txt_username)

        img_error.Visible = False
        lbl_error.Visible = False

        If Not IsNothing(Session("ID")) Then
            Response.Redirect("Default.aspx")
        End If

    End Sub

    Protected Sub lnk_submit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles lnk_submit.Click

        'String da ligação
        Dim connection As New SqlConnection("server=Laptop\SQLEXPRESS;uid=usrXPtO;pwd=pwdXPTO;database=dbXPTO")

        connection.Open()

        Dim sql As String = "SELECT ID, Nome, UltNome, NomeCompleto, Username, Password, Grupo FROM tbl_utilizadores WHERE Username = '" & txt_username.Text & "' AND Password = '" & txt_password.Text & "'"

        Dim dt_r As New SqlClient.SqlDataAdapter

        Dim dt_s As New DataSet()

        dt_r = New SqlClient.SqlDataAdapter(sql, connection)

        dt_s = New DataSet()

        dt_r.Fill(dt_s, "tbl_utilizadores")

        Dim countrows As Integer = dt_s.Tables("tbl_utilizadores").Rows.Count

        If countrows = 0 Then

            img_error.Visible = True
            lbl_error.Visible = True

        Else

            Session("ID") = dt_s.Tables("tbl_utilizadores").Rows(0)("ID")
            Session("Nome") = dt_s.Tables("tbl_utilizadores").Rows(0)("Nome")
            Session("UltNome") = dt_s.Tables("tbl_utilizadores").Rows(0)("UltNome")
            Session("NomeCompleto") = dt_s.Tables("tbl_utilizadores").Rows(0)("NomeCompleto")
            Session("Username") = dt_s.Tables("tbl_utilizadores").Rows(0)("Username")
            Session("Password") = dt_s.Tables("tbl_utilizadores").Rows(0)("Password")
            Session("Grupo") = dt_s.Tables("tbl_utilizadores").Rows(0)("Grupo")

            Dim IDGrupo As Integer = dt_s.Tables("tbl_utilizadores").Rows(0)("Grupo")

            'Ver os privilegios
            'String do SELECT
            Dim sql2 As String = "SELECT * FROM tbl_grupos WHERE ID = '" & IDGrupo & "'"

            Dim dt_r2 As New SqlClient.SqlDataAdapter

            Dim dt_s2 As New DataSet()

            dt_r2 = New SqlClient.SqlDataAdapter(sql2, connection)

            dt_s2 = New DataSet()

            dt_r2.Fill(dt_s2, "tbl_grupos")

            'Privilegios de Utilizador
            App_Read = dt_s2.Tables("tbl_grupos").Rows(0)("AppRead")
            App_Write = dt_s2.Tables("tbl_grupos").Rows(0)("AppWrite")
            App_Mod = dt_s2.Tables("tbl_grupos").Rows(0)("AppMod")

            Groups_Read = dt_s2.Tables("tbl_grupos").Rows(0)("GroupRead")
            Groups_Write = dt_s2.Tables("tbl_grupos").Rows(0)("GroupWrite")
            Groups_Mod = dt_s2.Tables("tbl_grupos").Rows(0)("GroupMod")

            Users_Read = dt_s2.Tables("tbl_grupos").Rows(0)("UserRead")
            Users_Write = dt_s2.Tables("tbl_grupos").Rows(0)("UserWrite")
            Users_Mod = dt_s2.Tables("tbl_grupos").Rows(0)("UserMod")

            Turmas_Read = dt_s2.Tables("tbl_grupos").Rows(0)("TurmasRead")
            Turmas_Write = dt_s2.Tables("tbl_grupos").Rows(0)("TurmasWrite")
            Turmas_Mod = dt_s2.Tables("tbl_grupos").Rows(0)("TurmasMod")

            Formandos_Read = dt_s2.Tables("tbl_grupos").Rows(0)("FormandosRead")
            Formandos_Write = dt_s2.Tables("tbl_grupos").Rows(0)("FormandosWrite")
            Formandos_Mod = dt_s2.Tables("tbl_grupos").Rows(0)("FormandosMod")

            Formadores_Read = dt_s2.Tables("tbl_grupos").Rows(0)("FormadoresRead")
            Formadores_Write = dt_s2.Tables("tbl_grupos").Rows(0)("FormadoresWrite")
            Formadores_Mod = dt_s2.Tables("tbl_grupos").Rows(0)("FormadoresMod")

            Salas_Read = dt_s2.Tables("tbl_grupos").Rows(0)("SalasRead")
            Salas_Write = dt_s2.Tables("tbl_grupos").Rows(0)("SalasWrite")
            Salas_Mod = dt_s2.Tables("tbl_grupos").Rows(0)("SalasMod")

            TiposSalas_Read = dt_s2.Tables("tbl_grupos").Rows(0)("TipoSalasRead")
            TiposSalas_Write = dt_s2.Tables("tbl_grupos").Rows(0)("TipoSalasWrite")
            TiposSalas_Mod = dt_s2.Tables("tbl_grupos").Rows(0)("TipoSalasMod")

            Equipamentos_Read = dt_s2.Tables("tbl_grupos").Rows(0)("EquipamentosRead")
            Equipamentos_Write = dt_s2.Tables("tbl_grupos").Rows(0)("EquipamentosWrite")
            Equipamentos_Mod = dt_s2.Tables("tbl_grupos").Rows(0)("EquipamentosMod")

            TiposEquipamentos_Read = dt_s2.Tables("tbl_grupos").Rows(0)("TipoEquipamentosRead")
            TiposEquipamentos_Write = dt_s2.Tables("tbl_grupos").Rows(0)("TipoEquipamentosWrite")
            TiposEquipamentos_Mod = dt_s2.Tables("tbl_grupos").Rows(0)("TipoEquipamentosMod")

            Reports = dt_s2.Tables("tbl_grupos").Rows(0)("Reports")

            Assiduidade = dt_s2.Tables("tbl_grupos").Rows(0)("Assiduidade")

            Response.Redirect("Default.aspx")

        End If

        connection.Close()

O código está aqui http://www.portugal-a-programar.pt/index.php?showtopic=43163 . Na verdade estou a usar sessions. Não sei se estou a fazer tudo correctamente ou se falta fazer referência a algum codigo ou configurar algo.

Obrigado pela atenção. É muito importante para mim conseguir resolver isto. Agradeço qualquer ajuda

Share this post


Link to post
Share on other sites
jeansantos

Na site.master tenho um LinkButton no topo que faz session.abandon()

Na global.asax não tenho nada escrito. Era suposto ter?

De qualquer maneira, tentei aceder em máquinas diferentes da rede local e ele só deixa aceder uma de cada vez com o método que já referi, mudar o nome da Cookie no IIS.

Share this post


Link to post
Share on other sites
Tiago Salgado

E no logout se tentares fazer o destroy do cookie? Não te resolve?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.