Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Julierme Felix

[Resolvido] Usuario Logado - VS2003

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em WebForms é possível utilizar Sessions pois existe um servidor por trás da aplicação que tratará essa informação. Em WinForms, por outro lado, a aplicação deve ser auto-suficiente, então uma alternativa como a mencionada acima, por variável, é perfeitamente viável. A diferença é que não existe um mecanismo pronto para tratar o tempo de inatividade, como no caso de sessions, e também, se o usuário fechar a aplicação ou abrir outra instância, ele terá que se logar mais uma vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em WebForms é possível utilizar Sessions pois existe um servidor por trás da aplicação que tratará essa informação. Em WinForms, por outro lado, a aplicação deve ser auto-suficiente, então uma alternativa como a mencionada acima, por variável, é perfeitamente viável. A diferença é que não existe um mecanismo pronto para tratar o tempo de inatividade, como no caso de sessions, e também, se o usuário fechar a aplicação ou abrir outra instância, ele terá que se logar mais uma vez.

 

Estou tentando usar variavel mas não estou conseguindo continua retornando o mesmo erro.

CODE
Public Property Usuario() As Usuario

Get

Return _Usuario

End Get

Set(ByVal value As Usuario)

_Usuario = value

End Set

End Property

e o código abaixo para atribuir o usario a variavel.

 

CODE
Dim sysusuario As String

sysusuario = txtLogin.Text

 

Dim cmdPegaPermissao As New SqlCommand("SELECT acessos, idusuario FROM usuarios WHERE idusuario='" + sysusuario + "'", Cn)

Dim drPegaPermissao As SqlDataReader

 

Try

drPegaPermissao = CType(cmdPegaPermissao.ExecuteReader, SqlDataReader)

While drPegaPermissao.Read()

Me._Usuario.Nome = CStr(drPegaPermissao("idusuario"))

Me._Usuario.TipoUsuario = CStr(drPegaPermissao("acessos"))

Compartilhar este post


Link para o post
Compartilhar em outros sites

Onde esta declarando sua variável e qual o erro??

 

Abraços...

usando a classe usuario

CODE
Public Class Usuario

 

Private _Nome As String

Private _Senha As String

Private _TipoUsuario As String

Private _IsValid As Boolean

 

Public Property Nome() As String

Get

Return _Nome

End Get

Set(ByVal value As String)

_Nome = value

End Set

End Property

Public Property Senha() As String

Get

Return _Senha

End Get

Set(ByVal value As String)

_Senha = value

End Set

End Property

Public Property TipoUsuario() As String

Get

Return _TipoUsuario

End Get

Set(ByVal value As String)

_TipoUsuario = value

End Set

End Property

Public Property IsValid() As Boolean

Get

Return _IsValid

End Get

Set(ByVal value As Boolean)

_IsValid = value

End Set

End Property

 

End Class

 

e no form de login atribuindo assim

CODE
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

If Me.txtLogin.Text <> String.Empty AndAlso Me.txtSenha.Text <> String.Empty Then

Cn.Open()

Dim sysusuario As String

sysusuario = txtLogin.Text

 

Dim cmdPegaPermissao As New SqlCommand("SELECT acessos, idusuario FROM usuarios WHERE idusuario='" + sysusuario + "'", Cn)

Dim drPegaPermissao As SqlDataReader

Try

drPegaPermissao = cmdPegaPermissao.ExecuteReader

While drPegaPermissao.Read()

Me._Usuario.Nome = CStr(drPegaPermissao("idusuario"))

Me._Usuario.TipoUsuario = CStr(drPegaPermissao("acessos"))

 

End While

Finally

Cn.Close()

End Try

End If

End Sub

 

o erro: object reference not set to an instance of an object

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal consegui resolver da seguinte maneira:

Criei uma classe chamada formularios.

 

CODE
Public 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
Public sysusuario As String

 

No formulario de login atribuir o valor a variavel do formulario de menu.

CODE
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()

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

 

Agradeço a todos pela ajuda.

 

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
Private 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.