Inquiridor
Usuario Logado no Sistema - VS2003

Pergunta
-
Pessoal na aplicação tenho um form de login que faz a autenticação dos usuarios cadastrados no sistema e armazenados na tabela usuarios, gostaria após o login exibir em label o usuario que fez o login.
A duvida é como armazeno o usuario que esta logado, em Web usava session, mas em winforms não estou sabendo fazer.
Código do botão OK do form de login
Private Sub btok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btok.Click
Dim senhaID As String
Dim strQuery As String
Dim strRetorno As String
Dim comando As New SqlCommand
Try
Cn.Open()
comando.Connection = Cn
comando.CommandText = "SELECT senha FROM usuarios Where idusuario=@nomeUsuario"
comando.Parameters.Add("@nomeUsuario", UserName.Text)
senhaID = comando.ExecuteScalar
Cn.Close()
If util.GeraHash(UserPass.Text).Equals(senhaID) Then
Dim filho1 As New menu
Me.Hide()
filho1.ShowDialog()
Me.Close()
Else
MessageBox.Show("Senha/Usuário Incorreto(s)")
End If
Catch ex As SqlException
MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
Cn.Dispose()
End Try
End Sub
Todas as Respostas
-
-
Criei uma classe chamada formularios.
Code SnippetPublic Class Formularios
Public Shared flogin As New login
Public Shared frmForm2 As New menu
Public Shared frmForm3 As New cadfuncionarios
End Class
No formulario menu declarei a variavel abaixo
Code SnippetPublic sysusuario As String
No formulario de login atribuir o valor a variavel do formulario de menu. linha em vermelho
Code SnippetPrivate Sub btok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btok.Click
Dim senhaID As String
Dim strQuery As String
Dim strRetorno As String
Dim comando As New SqlCommand
Try
Cn.Open()
Dim co As New SqlCommand
co.Connection = Cn
co.CommandText = "SELECT idusuario FROM usuarios Where idusuario=@nomeUsuario"
co.Parameters.Add("@nomeUsuario", UserName.Text)
user = co.ExecuteScalar
comando.Connection = Cn
comando.CommandText = "SELECT senha FROM usuarios Where idusuario=@nomeUsuario"
comando.Parameters.Add("@nomeUsuario", UserName.Text)
senhaID = comando.ExecuteScalar
Cn.Close()
If util.GeraHash(UserPass.Text).Equals(senhaID) Then
Me.Hide()
Formularios.frmForm2.sysusuario = user
Formularios.frmForm2.ShowDialog()
Me.Close()
Else
MessageBox.Show("Senha/Usuário Incorreto(s)")
End If
Catch ex As SqlException
MessageBox.Show("Erro ao efetuar a conexão com a base de dados : " + ex.Message)
Cn.Dispose()
End Try
End Sub
No formulario de menu verifico se o usuario tem acesso como administrador ou não, se tiver vai liberar um item do menu se não vai colocar o item como enativo.
Code SnippetPrivate Sub menu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
StatusBar1.Panels(3).Text = DateTime.Now.ToShortTimeString
StatusBar1.Panels(2).Text = DateTime.Now.ToShortDateString
StatusBar1.ShowPanels = True
'permissao
Cn.Open()
Dim drPegaPermissao As SqlDataReader
Dim cmdPegaPermissao As New SqlCommand("SELECT acessos, idusuario FROM usuarios WHERE idusuario='" + sysusuario + "'", Cn)
cmdPegaPermissao.ExecuteScalar()
drPegaPermissao = CType(cmdPegaPermissao.ExecuteReader, SqlDataReader)
While drPegaPermissao.Read
If CStr(drPegaPermissao("acessos")) = "Administrador" Then
Me.MenuItem4.Enabled = True
Else
Me.MenuItem4.Enabled = False
End If
End While
Cn.Close()
End Sub