Pergunta  
 
Rede de conhecimento computador >> Pergunta >> senhas >> Content
Como você cria uma página de login com campos de nome de usuário e senha?
A criação de uma página de login envolve o front-end (HTML, CSS, JavaScript) para a interface do usuário e o back-end (linguagem e banco de dados do lado do servidor) para autenticação e gerenciamento de dados. Aqui está um detalhamento de como criar uma página de login, cobrindo o front-end e um exemplo simplificado de back-end.

1. Front -end (estrutura html - `login.html`)

`` `html





login




login












`` `

Pontos -chave:

* ``: Declara o tipo de documento como HTML5.
* ``: Especifica o caractere que codifica o documento.
* ``: Configura a viewport para um design responsivo.
* ``:</b> Define o título que aparece na guia Browser. <br> * <b> ` <link rel ="Stylesheet" href ="style.css"> `:</b> Links para o seu arquivo CSS para estilo. <br> * <b> `<div>`:</b> Uma div contêiner para manter o formulário de login e seus elementos, facilitando o estilo. <br> * <b> ` <H2> login </h2> `:</b> Um título para o formulário de login. <br> * <b> `<form id =" loginform "action ="/login "method =" post ">`:</b> O núcleo do formulário:<br> * `id =" loginform "`:fornece um identificador exclusivo para o formulário, permitindo manipulá -lo com JavaScript. <br> * `Action ="/Login "`:<b> crucialmente importante! </b> Isso especifica o URL no seu servidor que lidará com a solicitação de login quando o formulário for enviado. Substitua `/login` pelo caminho real para o seu ponto de extremidade de login no lado do servidor. <br> * `Method =" Post "`:indica que os dados do formulário serão enviados ao servidor usando o método HTTP Post, que geralmente é mais seguro para dados confidenciais, como senhas. <br> * <b> `<div>`:</b> Recipientes para rótulos e campos de entrada, ajudando em estilo e organização. <br> * <b> `<Label para =" Nome de usuário ">` e `<input type =" text "id =" userName "name =" userName "requerido>`:</b> <br> * `Label`:fornece uma etiqueta de texto para o campo de entrada. O atributo `for` deve corresponder ao `id` do campo de entrada com o qual está associado. <br> * `input type =" text "`:cria um campo de entrada de texto para o nome de usuário. `name =" nome de usuário "` é importante-o código do lado do servidor usará esse nome para acessar o valor inserido pelo usuário. `requerir` torna o campo obrigatório. <br> * <b> `<input type =" senha "id =" senha "name =" senha "necessária>`:</b> Cria um campo de entrada de senha. O atributo `type =" senha "` mascara a entrada como os tipos de usuário. `name =" senha "` é usado pelo código do lado do servidor. `requerir` torna o campo obrigatório. <br> * <b> `<butter type =" submit "> login </botão> `:</b> O botão Enviar que aciona o envio do formulário. <br> * <b> `<div> </div> `:</b> Um espaço reservado para exibir mensagens de erro do servidor, se a autenticação falhar. <br> * <b> `<script src =" script.js "> </script> `:</b> Links para o seu arquivo JavaScript para qualquer validação do lado do cliente ou outras interações. <br> <br> <b> 2. Front -end (CSS Styling - `style.css`) </b> <br> <br> `` `CSS <br> corpo { <br> Font-Family:Sans-Serif; <br> Background-Color:#f4f4f4; <br> exibição:flex; <br> Justify-Content:Center; <br> alinhado-itens:centro; <br> Min-altura:100VH; <br> } <br> <br> .Login-container { <br> Background-Color:#FFF; <br> preenchimento:20px; <br> Radio de fronteira:8px; <br> Box-Shadow:0 0 10px rgba (0, 0, 0, 0.1); <br> Largura:300px; <br> } <br> <br> .form-group { <br> Margin-Bottom:15px; <br> } <br> <br> rótulo { <br> exibição:bloco; <br> Bottom de margem:5px; <br> } <br> <br> entrada [type ="text"], <br> input [type ="senha"] { <br> largura:100%; <br> preenchimento:8px; <br> borda:1px sólido #ccc; <br> Radio de fronteira:4px; <br> Timing de caixa:caixa de fronteira; / * Inclua preenchimento e borda na largura e altura total do elemento */ <br> } <br> <br> botão { <br> Background-Color:#4CAF50; <br> Cor:Branco; <br> preenchimento:10px 15px; <br> fronteira:nenhuma; <br> Radio de fronteira:4px; <br> Cursor:Ponteiro; <br> largura:100%; <br> } <br> <br> Botão:Hover { <br> Background-Color:#3E8E41; <br> } <br> <br> .error-message { <br> Cor:vermelho; <br> Margin-top:10px; <br> } <br> `` ` <br> <br> Este CSS fornece um estilo básico para centralizar o formulário de login, estilizar os campos de entrada e o botão e fornecer um indicador visual para mensagens de erro. <br> <br> <b> 3. Front -end (JavaScript - `script.js` - validação opcional do lado do cliente) </b> <br> <br> `` `JavaScript <br> Document.getElementById ('Loginform'). AddEventListener ('submit', function (event) { <br> const userName =document.getElementById ('nome de usuário'). <br> const senha =document.getElementById ('senha'). value; <br> const errorMessagediv =document.getElementById ('errorMessage'); <br> <br> errorMessagediv.TextContent =''; // Limpe erros anteriores <br> <br> if (! Nome de usuário ||! Senha) { <br> errorMessagediv.TextContent ='Por favor, insira o nome de usuário e a senha.'; <br> event.preventDefault (); // impedir o envio do formulário <br> retornar; <br> } <br> <br> // Você pode adicionar uma validação mais complexa do lado do cliente aqui, como verificações de força de senha. <br> }); <br> <br> `` ` <br> <br> Este JavaScript adiciona uma verificação de validação do lado do cliente que os campos de nome de usuário e senha foram preenchidos antes de enviar o formulário ao servidor. É opcional, mas melhora a experiência do usuário, fornecendo feedback imediato. <br> <br> <b> 4. Back -end (node.js com expresso - exemplo) </b> <br> <br> Este é um exemplo básico usando o Node.js e a estrutura expressa. Você precisará instalar estes:<br> <br> `` `BASH <br> NPM Install Express Body-Parser BCRYPT <br> `` ` <br> <br> * <b> `express`:</b> Uma estrutura de aplicativos da web para Node.JS. <br> * <b> `Body-Parser`:</b> Middleware para analisar órgãos de solicitação. <br> * <b> `bcrypt`:</b> Biblioteca para senhas de hash com segurança. (Importante para segurança!) <br> <br> `` `JavaScript <br> const express =requer ('express'); <br> Const BodyParser =requer ('Body-Parser'); <br> const bcrypt =requer ('bcrypt'); <br> const app =express (); <br> Porta const =3000; <br> <br> // Banco de dados de usuário in-Memory (substitua por um banco de dados real como MongoDB ou PostgreSQL) <br> const usuários =[]; // Matriz de objetos de usuário {nome de usuário, senhaHash} <br> <br> App.use (BodyParser.urlencoded ({estendido:false})); // Bodos codificados por URL de análise <br> App.Use (BodyParser.json ()); // analisar os corpos JSON <br> App.Use (Express.static ('Public')); // serve arquivos estáticos (html, css, js) do diretório 'público' <br> <br> App.get ('/', (req, res) => { <br> Res.sendfile (__ Dirname + '/public/login.html'); // Sirva a página de login <br> }); <br> <br> App.Post ('/Login', Async (req, res) => { <br> const {Nome de usuário, senha} =req.body; <br> <br> const user =users.find (u => u.UserName ===Nome de usuário); <br> <br> if (usuário) { <br> // Compare a senha fornecida com o hash de senha armazenada <br> const passwordMatch =aguarda bcrypt.compare (senha, user.passwordhash); <br> <br> if (senha de senha) { <br> // Autenticação bem -sucedida <br> res.send ('Login bem -sucedido!'); // Em um aplicativo real, você redirecionaria para um painel ou definia um cookie de sessão. <br> } outro { <br> // Senha inválida <br> res.status (401) .send ('nome de usuário ou senha inválidos'); <br> } <br> } outro { <br> // Usuário não encontrado <br> res.status (401) .send ('nome de usuário ou senha inválidos'); <br> } <br> }); <br> <br> <br> App.Post ('/registra', assíncão (req, res) => { <br> const {Nome de usuário, senha} =req.body; <br> <br> // Verifique se o nome de usuário já existe <br> if (users.find (u => u.username ===nome de usuário)) { <br> return res.status (400) .send ('nome de usuário já existe'); <br> } <br> <br> // hash a senha <br> const Saltrounds =10; // ou mais para hash mais forte <br> const passwordHash =aguarda bcrypt.hash (senha, saltrounds); <br> <br> // armazenar o novo usuário no banco de dados <br> users.push ({nome de usuário, senhaHash}); <br> <br> Res.status (201) .send ('Usuário registrado com sucesso'); <br> }); <br> <br> <br> App.Listen (Port, () => { <br> console.log (`servidor ouvindo em http:// localhost:$ {porta}`); <br> }); <br> `` ` <br> <br> <b> Explicação do código de back-end:</b> <br> <br> 1. <b> importações:</b> Importa os módulos necessários:`express`,` Body-Parser` e `BCRYPT '. <br> 2. <b> Inicialização:</b> Cria uma instância de aplicativo Express (`App`) e define a porta. <br> 3. Middleware:</b> <br> * `BodyParser.urlencoded ({Extended:false})`:analisa os órgãos de solicitação codificados por URL (dados enviados dos formulários HTML). `estendido:false` usa a biblioteca de consultas embutida, enquanto` estendido:true` usa a biblioteca `qs`, que permite estruturas de objetos mais complexos. <br> * `bodyparser.json ()`:analisa os órgãos de solicitação json. <br> * `express.static ('public')`:serve arquivos estáticos (html, css, javascript) do diretório 'público'. É aqui que você colocaria os arquivos `login.html`,` style.css` e `script.js`. <br> 4. <b> Rota para servir a página de login (`/`):</b> <br> * `App.get ('/', ...)`:define uma rota que manipula solicitações no caminho raiz (`/`). <br> * `res.sendfile (__ dirname + '/public/login.html')`:envia o arquivo `login.html` para o cliente. `__dirname` é o diretório atual do script, garantindo que o caminho do arquivo esteja correto. <br> 5. <b> Rota para manusear o envio de login (`/login`):</b> <br> * `App.Post ('/login', ...)`:define uma rota que lida com solicitações de postagem no caminho `/login`. É aqui que os dados do formulário de login são enviados. <br> * `req.body`:contém os dados enviados do formulário. Graças ao `Body-Parser`, você pode acessar o nome de usuário e a senha usando` req.body.username` e `req.body.password`. <br> * `users.find (u => u.UserName ===Nome de usuário)`:pesquise a matriz `usuários` por um usuário com o nome de usuário correspondente. (Em um aplicativo real, você consultaria seu banco de dados.) <br> * <b> hash de senha com `bcrypt`:</b> <br> * `bcrypt.compare (senha, user.passwordhash)`:Esta é a parte crucial da segurança. Ele compara a senha de texto simples inserido pelo usuário com o hash * armazenado * da senha. `BCrypt` lida com o processo de salga automaticamente. Isso é muito mais seguro do que armazenar senhas em texto simples. <br> * <b> Lógica de autenticação:</b> <br> * Se um usuário for encontrado e a senha corresponder, você normalmente definiria um cookie de sessão para autenticar o usuário e redirecioná-lo para uma área de login. Neste exemplo, ele apenas envia um "Login bem -sucedido!" mensagem. <br> * Se o usuário não for encontrado ou a senha não corresponder, ele enviará uma resposta de erro (`401 não autorizada`). O JavaScript front-end pode exibir essa mensagem de erro ao usuário. <br> 6. <b> Rota para registro </b> <br> * Adicionado uma rota de registro para permitir que novos usuários sejam adicionados ao sistema <br> * A senha não é armazenada, mas hash para garantir a segurança <br> 7. <b> Iniciando o servidor:</b> <br> * `App.Listen (Port, ...)`:inicia o servidor Express na porta especificada. <br> <br> <b> Considerações importantes e práticas recomendadas de segurança:</b> <br> <br> * Banco de dados <b>:</b> Substitua a matriz `usuários 'na memória por um banco de dados real (por exemplo, MongoDB, PostgreSQL, MySQL). Use uma biblioteca de banco de dados (como o Mongoose para MongoDB ou sequelizar para PostgreSQL/MySQL) para interagir com o banco de dados. <br> * <b> Hash de senha:</b> * Nunca* armazene as senhas no texto simples. Sempre use um algoritmo de hash de senha forte como `bcrypt` (como mostrado no exemplo). `BCRYPT` inclui salga, o que torna muito mais difícil para os invasores quebrar senhas, mesmo que obtenham o banco de dados. Use `bcrypt.hash ()` para hash senhas quando os usuários se registrarem e `bcrypt.compare ()` para comparar a senha inserida com o hash armazenado durante o login. <br> * <b> Validação de entrada:</b> Validar a entrada do usuário no lado do cliente (para experiência do usuário) e no lado do servidor (para segurança). Habilizar a entrada para evitar ataques de injeção (por exemplo, injeção de SQL, XSS). <br> * <b> Gerenciamento da sessão:</b> Use sessões para manter o estado de login do usuário. Após o login bem -sucedido, armazene um ID da sessão em um cookie no navegador do cliente. Nas solicitações subsequentes, o servidor pode usar o ID da sessão para identificar o usuário sem exigir que ele faça login novamente. Bibliotecas como 'Express-Session` podem ajudar a gerenciar sessões. <br> * <b> https:</b> Sempre use HTTPS (SSL/TLS) para criptografar a comunicação entre o cliente e o servidor. Isso impede ataques de escuta e homem no meio. Obtenha um certificado SSL de uma autoridade de certificado (por exemplo, vamos criptografar). <br> * <b> Manuseio de erro:</b> Implementar o manuseio de erro adequado para impedir que informações confidenciais sejam expostas em mensagens de erro. Erros de log com segurança. <br> * <b> Proteção CSRF:</b> Proteger contra ataques de falsificação de solicitação entre sites (CSRF) usando os tokens CSRF. <br> * <b> Limitação da taxa:</b> Implementar limitação da taxa para evitar ataques de força bruta no terminal de login. <br> <br> <b> Como executar o exemplo:</b> <br> <br> 1. <b> Criar diretório de projeto:</b> Crie um diretório para o seu projeto (por exemplo, `Login-App`). <br> 2. <b> Crie arquivos:</b> Crie os seguintes arquivos dentro do diretório do projeto:<br> * `login.html` (copie o código HTML) <br> * `style.css` (copie o código CSS) <br> * `script.js` (copie o código JavaScript) <br> * `server.js` (ou` App.js`, ou o que você quiser nomear seu arquivo do Node.js Server - copie o código Node.js) <br> * Crie uma pasta `public` e coloque` login.html`, `style.css` e` script.js` dentro dele. <br> 3. <b> Instale dependências:</b> Abra um terminal no diretório do projeto e execute:<br> `` `BASH <br> NPM Install Express Body-Parser BCRYPT <br> `` ` <br> 4. <b> Execute o servidor:</b> No terminal, execute:<br> `` `BASH <br> Node Server.js <br> `` ` <br> 5. <b> aberto no navegador:</b> Abra seu navegador da web e vá para `http:// localhost:3000`. Você deve ver a página de login. <br> <br> Lembre -se de que este é um exemplo básico. Para um aplicativo do mundo real, você precisará implementar a integração de banco de dados adequada, gerenciamento de sessões e medidas de segurança. <div class=ptad2><script language='javascript' src='/ad/p2.js'></script></div> </div> </div> <div class=ptnrx></div> <table width="91%" height="52" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="51%"><p>Anterior : <a class='LinkPrevArticle' href='/Pergunta/passwords/333567.html' >Como você acessa a pasta de senha se o diretório estiver localizado no bloqueado. Eu me traquei de todas as minhas unidades usando a pasta. pode ganhar de novo? </a></li></p></td> </tr> <tr> <td width="49%"> Próximo : <a class='LinkNextArticle' href='/Pergunta/passwords/333574.html' >O que você esquece quando esquece sua senha no Whoshere? </a></li></td> </tr> </table></td> </tr> </table> <div class=bai7></div> <table width="770" height="246" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="375" height="246" valign="top"><table width="380" border="0" cellpadding="0" cellspacing="0" class="bian"> <tr> <td height="244" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" background="img_dm/danmai_r4_c04 -.jpg" bgcolor="#DBE3EE"> <tr> <td width="4%" height="29"> </td> <td width="96%" class="lan_lm"> Os artigos relacionados </td> </tr> </table> <table width="95%" height="209" border="0" align="center" cellpadding="0" cellspacing="4"> <tr> <td height="201"><table width="100%" cellpadding="0" cellspacing="0"><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/passwords/253292.html" title="Como redefinir o Kindle Fire de fábrica sem senha dos pais " target="_self">Como redefinir o Kindle Fire de fábrica sem senha dos …</a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/passwords/198943.html" title="Como limpar a senha de configuração para um HP Vectra VLI8 DT " target="_self">Como limpar a senha de configuração para um HP Vectra…</a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/passwords/252548.html" title="Galaxy S8/S8+ Esqueceu a senha do PIN O que fazer? " target="_self">Galaxy S8/S8+ Esqueceu a senha do PIN O que fazer? </a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/passwords/199125.html" title="Como Recuperar uma perdida Nome de usuário e senha no Windows XP " target="_self">Como Recuperar uma perdida Nome de usuário e senha no …</a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/passwords/249392.html" title="Como criar uma senha forte e segura " target="_self">Como criar uma senha forte e segura </a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/passwords/334425.html" title="Você pode alterar a senha do administrador de não usuários no XP? " target="_self">Você pode alterar a senha do administrador de não usu…</a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/passwords/199049.html" title="Como desbloquear um laptop da Apple Quando a senha for perdida " target="_self">Como desbloquear um laptop da Apple Quando a senha for …</a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/passwords/288178.html" title="Que tipo de autenticação o DOD exige para criptografar dados sensíveis, incluindo PII e PHI em dispositivos móveis quando enviados por e-mail? " target="_self">Que tipo de autenticação o DOD exige para criptografa…</a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/passwords/199009.html" title="Como definir um nome de usuário e senha em seu computador " target="_self">Como definir um nome de usuário e senha em seu computa…</a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/passwords/334570.html" title="Como você lê essa pasta no Registro do Windows Vista para encontrar sua senha wifi ou sua chave de criptografia? " target="_self">Como você lê essa pasta no Registro do Windows Vista …</a></td></tr><tr></tr></table></td> </tr> </table></td> </tr> </table></td> <td width="20" valign="top"></td> <td width="375" valign="top"><table width="380" border="0" cellpadding="0" cellspacing="0" class="bian"> <tr> <td height="244" valign="top"><table width="100%" border="0" cellpadding="0" cellspacing="0" background="img_dm/danmai_r4_c04 -.jpg" bgcolor="#DBE3EE"> <tr> <td width="4%" height="29"> </td> <td width="96%" class="lan_lm">Artigos em destaque </td> </tr> </table> <table width="95%" height="207" border="0" align="center" cellpadding="0" cellspacing="4"> <tr> <td height="199"><table width="100%" cellpadding="0" cellspacing="0"><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/pc-troubleshooting/237667.html" title="Como bloquear um artista no Spotify " target="_self">Como bloquear um artista no Spotify </a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/pc-support/186693.html" title="Como remover programas ocultos e indesejados " target="_self">Como remover programas ocultos e indesejados </a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/pc-troubleshooting/191943.html" title="Como reparar a conexão SATA de plástico sobre a fonte de alimentação dentro de meu computador " target="_self">Como reparar a conexão SATA de plástico sobre a fonte…</a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/pc-troubleshooting/246756.html" title="Como usar papéis de parede de vídeo ao vivo no Android? " target="_self">Como usar papéis de parede de vídeo ao vivo no Androi…</a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/Google/248778.html" title="Como remover vírgulas no Planilhas Google " target="_self">Como remover vírgulas no Planilhas Google </a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/pc-troubleshooting/244567.html" title="Como espelhar um telefone, Mac ou PC Fire TV Stick " target="_self">Como espelhar um telefone, Mac ou PC Fire TV Stick </a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/pc-support/190671.html" title="Como consertar uma DLL " target="_self">Como consertar uma DLL </a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/computer-viruses/279113.html" title="Como você limpa um computador e o inicia do zero se seu vírus infestado? " target="_self">Como você limpa um computador e o inicia do zero se se…</a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/pc-troubleshooting/250490.html" title="Por que cancelo o envio ou edito mensagens no iMessage " target="_self">Por que cancelo o envio ou edito mensagens no iMessage </a></td></tr><tr><td width="10" valign="top" class="">·</td><td class=""><a class="" href="/Pergunta/pc-troubleshooting/191676.html" title="Meu Dell Dimension E521 AMD 64 executa muito Slowly " target="_self">Meu Dell Dimension E521 AMD 64 executa muito Slowly </a></td></tr><tr></tr></table></td> </tr> </table></td> </tr> </table></td> </tr> </table></td> </tr> </table> <div class=bai7></div> <div class="ptbottom bs"> Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados </div> </div> </body> </html>