Usuário consultar seus próprios dados

18/12/2014

0

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
Randrade

Randrade

Responder

Posts

18/12/2014

Soeuseijothaz

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.
Responder

18/12/2014

Randrade

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.
Responder

18/12/2014

Soeuseijothaz

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:


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:

	
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.
Responder

18/12/2014

Randrade

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?
Responder

18/12/2014

Soeuseijothaz

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:

    Session["Login"]  = txtUsr.Text;


Ou assim:

    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?
Responder

19/12/2014

Randrade

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.
Responder

19/12/2014

Soeuseijothaz

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.
Responder

19/12/2014

Randrade

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.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar