Array
(
)

Usuário consultar seus próprios dados

Randrade
   - 18 dez 2014

Ai pessoa,
Estou desenvolvendo um módulo WEB para uma aplicação desktop. O banco de dados está criado e tudo funcionando corretamente.
O problema é que agora, o usuário irá realizar a autenticação via AD( Active Directory). Até ai tudo bem.
A aplicação possui um controle de funcionários( que não possuem acesso ao sistema) e neste controle possui apenas informações dos funcionários(nome, telefone, endereço, etc) e necessito liberar acesso para os mesmos visualizarem seus dados.
Agora vem o problema: Como fazer para que o usuário logue no sistema e só tenha acesso as suas informações?
Estou meio perdido na lógica para fazer isso, pois até então havia trabalhado apenas com permissões de usuários.
Alguém poderia me ajudar?

P.S: Estou desenvolvendo em Asp.NET MVC 5

Jothaz
   - 18 dez 2014

Use quando o usuário logar crie Sessions existem vários exemplos de uso na net.
Elas ficam armazenadas na memória do servidor e podem ser usadas em toda a aplicação.
Pode-se inclusive carregá-las com uma classe.
Elas expiram em um determinado tempo de inatividade por parte do usuário e de acordo com o timeout configurado.
Aliás é prudente que depois de um tempo inativo a seção caia e vá a pagina de login.

Randrade
   - 18 dez 2014

Olá Jothaz,
Esta parte eu já estudei e já implementei em outros sistemas. O problema mesmo é a lógica básica( sei até que meio besta perguntar, por tão simples que é). Necessito dessa separação de informações por login( este dado percence a tal usuário, então só ele poderá ver)
Um exemplo mais simples, fora do meu cenário, mas que porém me atende perfeitamente.

Ex: Um cadastro de uma escola, onde alunos conseguem ver suas notas e seus dados, porém não conseguem visualizar as dos demais.

Preciso dessa funcionalidade, de ligar um login aqueles dados.
Possuo a tabela alunos, onde contém as informações de alunos(nome, login, senha, email, etc).
Preciso desta simples lógica, deste controle.

procurei aqui no devmedia, porém os exemplos que achei, são muitos vagos, e não sanou minha dúvida.

Jothaz
   - 18 dez 2014

Existem mil formas de se implementar e fica difícil sugerir algo sem conhecer a estrutura da sua aplicação.

Então vou descrever um processo básico e veremos se lhe ajuda.

Na página de Login.aspx você cria a Session, pode ser algo como o exemplo a seguir:

#Código


if (!string.IsNullOrEmpty(txtUsr.Text) && (!string.IsNullOrEmpty(txtSenha.Text)))
{
	Usuario objFiltroUsuario = new Usuario();
	objFiltroUsuario.Login = txtUsr.Text;
	objFiltroUsuario.Senha = txtSenha.Text;
	Usuario objUsuario = Usuario.ListarUsuario(objFiltroUsuario);
	if (objUsuario != null)
	{
		UsuarioLogado = objUsuario;
		FormsAuthentication.RedirectFromLoginPage(txtUsr.Text, false);
		
		//Cria a Session
		Session["Usuario"] = objUsuario;
	}
	else
	{
		//Limpa a Session
		Session["Usuario"] = null;
		FormsAuthentication.RedirectFromLoginPage(txtUsr.Text, false);
		lblErrorMessage.Text = "Login ou senha inválidos.";
	}
}


Onde você quiser fazer a consulta você recupera o login ou id e usa para consultar os dados:

#Código
	
Usuario objLogin = (Usuario)Session["oi"];

string login = objLogin.Login;

//Ai é só usar o valor recuperado para pesquisar os dados. Enquanto o browser manter-se aberto e em atividade a Session estará ativa e ligada a quem logou.



A Session vale por browser aberto, então e abrir um aba ele considerará que o usuário ainda esta logado.

Existe um forma de deixar a Session visisil em todas as páginas sem a necessidade de ficar reuperando a todo momento, mas
é preciso fazer uma mudança na estrutura de todas a página. Se quiser lhe passo como pode ser feito.

Randrade
   - 18 dez 2014

Isso já me deu uma ideia de como começar.

Muito obrigado pela ajuda.

Apenas para complementar, você teria algum material que implementa um login parecido? ou sabe se no devmedia possui algum?

Jothaz
   - 18 dez 2014


Citação:
Isso já me deu uma ideia de como começar.

Muito obrigado pela ajuda.

Apenas para complementar, você teria algum material que implementa um login parecido? ou sabe se no devmedia possui algum?


Só completando você pode preencher a Session com qualquer valor, passei o exemplo de classe apenas para mostrar como fazer.

Mas pose ser assim:

#Código

    Session["Login"]  = txtUsr.Text;


Ou assim:

#Código
    Session["Logado"]  = "ok";


Não tenho material nenhum, tenho alguns projetos em que uso.

Você esta usando o FormsAuthentication?

Já tem o controle de permissões implementado?

Randrade
   - 19 dez 2014

Estou usando FormsAuthentication sim.

Neste projeto ainda não implementei o controle de permissões, até porque o gerente não me repassou os requisitos completos ainda.

Se possuir algum projeto que possa compartilhar, que não irá lhe trazer problemas, eu agradeceria.

E obrigado pela ajuda, está sendo bem útil.

Jothaz
   - 19 dez 2014


Citação:
Estou usando FormsAuthentication sim.

Neste projeto ainda não implementei o controle de permissões, até porque o gerente não me repassou os requisitos completos ainda.

Se possuir algum projeto que possa compartilhar, que não irá lhe trazer problemas, eu agradeceria.

E obrigado pela ajuda, está sendo bem útil.


Qual o seu email?

Talvez eu ache algum projeto dos que tenho que possa lhe enviar.

Randrade
   - 19 dez 2014


Citação:

Citação:
Estou usando FormsAuthentication sim.

Neste projeto ainda não implementei o controle de permissões, até porque o gerente não me repassou os requisitos completos ainda.

Se possuir algum projeto que possa compartilhar, que não irá lhe trazer problemas, eu agradeceria.

E obrigado pela ajuda, está sendo bem útil.


Qual o seu email?

Talvez eu ache algum projeto dos que tenho que possa lhe enviar.


renilsonandrade@hotmail.com

E obrigado, você está me ajudando muito.