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
Nenhum comentário:
Postar um comentário