Usando o passwd para autenticar seus programas

Muitas vezes nossas aplicações necessitam fazer autenticação de usuários, e ao invés de criarmos nossa base, dependendo da necessidade, podemos utilizar a base de usuários do sistema, é o que vamos fazer!!!

Dados do sistema: FreeBSD 8.2 RELEASED

Como compilar o código abaixo: gcc -lcrypt verificaSenha.c -o TesteDeLogin

#include <unistd.h>
#include <stdio.h>
#include <pwd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <errno.h>
void LeUserSenha(char * user, char * senha)
{
printf("\nUsuario:");
scanf("%s",user);
strncpy(senha,getpass("\nSenha:"),49);
}
int auten(char * user, char * senha)
{
struct passwd * pw;
pw = getpwnam(user);
if(pw == NULL)
{
return 0; //não encontrou usuario
}
else
{
if(strcmp(crypt(senha,pw->pw_passwd),pw->pw_passwd)==0)
return 1; //encontrou usuario
else
return -1; //a senha não confere
}
}
//programa de teste
int main()
{
char senha[50];
char usuario[50];
int resultAut;
LeUserSenha(usuario, senha);
resultAut =auten(usuario,senha);
if(resultAut==1)
printf("\n\tPermitido acesso: %d\n",resultAut);
else
printf("\n\tAcesso Negado:%d\n",resultAut);
return 1;
}

É isso pessoal

Colaboração de : Eduardo A Bortolini

Fonte: http://eduengcomp.blogspot.com/2011/05/usando-o-passwd-para-autenticar-seus.html

Deixe uma resposta