Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> Domanda >> password >> .

Come si crea una pagina di accesso con campi utente e password?

La creazione di una pagina di accesso prevede sia il front-end (HTML, CSS, JavaScript) per l'interfaccia utente e il back-end (linguaggio sul lato server e database) per l'autenticazione e la gestione dei dati. Ecco una rottura di come creare una pagina di accesso, che copre sia il front-end che un approccio di back-end di esempio semplificato.

1. Front -end (HTML Structure - `login.html`)

`` `html

Accedi

Login

Nome utente:

password:

Accedi

`` `

Punti chiave:

* ``: Dichiara il tipo di documento come HTML5.

* ``: Specifica la codifica dei caratteri per il documento.

* ``: Configura il Viewport per il design reattivo.

* ``:</b> Imposta il titolo che appare nella scheda browser. <p> * <b> ` <link rel ="Stylesheet" href ="style.css"> `:</b> Collegamenti al tuo file CSS per lo styling. <p> * <b> `<div>`:</b> Un Div contenitore per mantenere la forma di accesso e i suoi elementi, facilitando lo stile. <p> * <b> ` <h2> Login </h2> `:</b> Un intestazione per il modulo di accesso. <p> * <b> `<modulo id =" loginform "action ="/login "metodo =" post ">`:</b> Il nucleo della forma:<p> * `id =" loginform "`:fornisce un identificatore univoco per il modulo, permettendoti di manipolarlo con JavaScript. <p> * `action ="/login "`:<b> fondamentalmente importante! </b> Ciò specifica l'URL sul server che gestirà la richiesta di accesso quando viene inviato il modulo. Sostituisci `/login` con il percorso effettivo all'endpoint di accesso lato server. <p> * `Method =" Post "`:indica che i dati del modulo verranno inviati al server utilizzando il metodo HTTP Post, che è generalmente più sicuro per dati sensibili come le password. <p> * <b> `<div>`:</b> Contenitori per etichette e campi di input, aiutando lo stile e l'organizzazione. <p> * <b> `<etichetta per =" nome utente ">` e `<input type =" text "id =" nome utente "nome =" nome utente "richiesto>`:</b> <p> * `Label`:fornisce un'etichetta di testo per il campo di input. L'attributo `per` dovrebbe corrispondere all'id` del campo di input a cui è associato. <p> * `input type =" text "`:crea un campo di input di testo per il nome utente. `name =" nome utente "` è importante:il codice lato server utilizzerà questo nome per accedere al valore immesso dall'utente. `richiesto` rende il campo obbligatorio. <p> * <b> `<input type =" password "id =" password "name =" password "richiesto>`:</b> Crea un campo di input password. L'attributo `type =" password "` maschera l'input come tipi utente. `name =" password "` viene utilizzato dal codice lato server. `richiesto` rende il campo obbligatorio. <p> * <b> `<button type =" invia "> login </botton> `:</b> Il pulsante di invio che innesca l'invio del modulo. <p> * <b> `<div> </div> `:</b> Un segnaposto per visualizzare i messaggi di errore dal server, se l'autenticazione non riesce. <p> * <b> `<script src =" script.js "> </script> `:</b> Collegamenti al tuo file JavaScript per qualsiasi convalida sul lato client o altre interazioni. <p> <p> <b> 2. Front -end (CSS Styling - `style.css`) </b> <p> <p> `` `CSS <p> corpo { <p> Font-Family:sans-serif; <p> Background-color:#f4f4f4; <p> display:flex; <p> giustificare contento:centro; <p> ALIGE-ITMS:CENTRO; <p> Min-Height:100VH; <p> } <p> <p> .login-container { <p> Background-color:#FFF; <p> imbottitura:20px; <p> raggio di frontiera:8px; <p> Box-Shadow:0 0 10px RGBA (0, 0, 0, 0.1); <p> larghezza:300px; <p> } <p> <p> .Form-Group { <p> margine-bottom:15px; <p> } <p> <p> etichetta { <p> Visualizza:blocco; <p> margine-bottom:5px; <p> } <p> <p> Input [type ="text"], <p> Input [type ="password"] { <p> larghezza:100%; <p> imbottitura:8px; <p> bordo:1px solido #ccc; <p> raggio di frontiera:4px; <p> Dimensizzazione di scatole:bordo-box; / * Includi imbottitura e bordo nella larghezza e altezza totale dell'elemento */ <p> } <p> <p> Button { <p> Background-color:#4Caf50; <p> Colore:bianco; <p> imbottitura:10px 15px; <p> confine:nessuno; <p> raggio di frontiera:4px; <p> Cursore:puntatore; <p> larghezza:100%; <p> } <p> <p> Button:Hover { <p> Background-color:#3e8e41; <p> } <p> <p> .error-message { <p> Colore:rosso; <p> margine-top:10px; <p> } <p> `` ` <p> <p> Questo CSS fornisce uno stile di base per centrare il modulo di accesso, modellare i campi di input e il pulsante e fornire un indicatore visivo per i messaggi di errore. <p> <p> <b> 3. Front -end (JavaScript - `script.js` - Convalida sul lato client opzionale) </b> <p> <p> `` `JavaScript <p> Document.getElementById ('LogInForm'). AddEventListener ('Invia', Function (Event) { <p> const nome utente =document.getElementById ('nome utente'). Valore; <p> const password =document.getElementById ('Password'). Valore; <p> const errorMessageDiv =document.getElementById ('errorMessage'); <p> <p> errorMessageDiv.TextContent =''; // Cancella errori precedenti <p> <p> if (! nome utente ||! password) { <p> errorMessageDiv.TextContent ='Si prega di inserire sia il nome utente che la password.'; <p> event.preventDefault (); // prevenire la presentazione del modulo <p> ritorno; <p> } <p> <p> // È possibile aggiungere una convalida più complessa sul lato client qui, come i controlli di forza della password. <p> }); <p> <p> `` ` <p> <p> Questo JavaScript aggiunge un controllo di convalida sul lato client che entrambi i campi di nome utente e password siano stati compilati prima di inviare il modulo al server. È facoltativo ma migliora l'esperienza dell'utente fornendo un feedback immediato. <p> <p> <b> 4. Back -end (node.js con express - esempio) </b> <p> <p> Questo è un esempio di base usando Node.js e il framework Express. Dovrai installarli:<p> <p> `` `Bash <p> NPM Installa Express Body-Parser BCrypt <p> `` ` <p> <p> * <b> `Express`:</b> Un framework di applicazioni Web per node.js. <p> * <b> `Body-Parser`:</b> Middleware per analizzare i corpi di richiesta. <p> * <b> `bcrypt`:</b> Biblioteca per le password di hashing in modo sicuro. (Importante per la sicurezza!) <p> <p> `` `JavaScript <p> const espress =requisito ('express'); <p> const bodyParser =requisito ('Body-Parser'); <p> const bcrypt =requisito ('bcrypt'); <p> const app =express (); <p> port const =3000; <p> <p> // database utente in memoria (sostituire con un database reale come MongoDB o PostgreSQL) <p> const utenti =[]; // array di oggetti utente {nome utente, passwordhash} <p> <p> app.use (bodyParser.urLencoded ({esteso:false})); // analizza i corpi codificati URL <p> app.use (bodyParser.json ()); // analizza i corpi json <p> app.use (express.static ('pubblico')); // Servi file statici (HTML, CSS, JS) dalla directory "pubblica" <p> <p> app.get ('/', (req, res) => { <p> Res.sendFile (__ Dirname + '/public/login.html'); // Servi la pagina di accesso <p> }); <p> <p> app.post ('/login', async (req, res) => { <p> const {nome utente, password} =req.body; <p> <p> const utente =utenti.find (u => U.UserName ===Nome utente); <p> <p> if (utente) { <p> // Confronta la password fornita con l'hash della password memorizzata <p> const passwordMatch =Abveat bcrypt.Compare (password, user.passwordhash); <p> <p> if (passwordmatch) { <p> // autenticazione riuscita <p> res.send ('login di successo!'); // In una vera applicazione, ti reindirizzeresti a una dashboard o imposteresti un cookie di sessione. <p> } altro { <p> // password non valida <p> Res.Status (401) .send ("nome utente o password non valido"); <p> } <p> } altro { <p> // utente non trovato <p> Res.Status (401) .send ("nome utente o password non valido"); <p> } <p> }); <p> <p> <p> app.post ('/register', async (req, res) => { <p> const {nome utente, password} =req.body; <p> <p> // controlla se il nome utente esiste già <p> if (utenti.find (u => U.UserName ===nome utente)) { <p> return res.status (400) .send ('il nome utente esiste già'); <p> } <p> <p> // hash la password <p> const saltrounds =10; // o più per hashing più forte <p> const passwordHash =Abveat bcrypt.Hash (password, saltrounds); <p> <p> // memorizza il nuovo utente nel database <p> utenti.push ({nome utente, passwordHash}); <p> <p> Res.Status (201) .send ('utente registrato correttamente'); <p> }); <p> <p> <p> app.listen (port, () => { <p> console.log (`Server Ascolt at http:// localhost:$ {port}`); <p> }); <p> `` ` <p> <p> <b> Spiegazione del codice back-end:</b> <p> <p> 1. <b> Importazioni:</b> Importa i moduli necessari:`Express`,` Body-Parser` e `bcrypt`. <p> 2. <b> Inizializzazione:</b> Crea un'istanza espressa dell'applicazione (`app`) e imposta la porta. <p> 3. <b> Middleware:</b> <p> * `BodyParser.urlencoded ({esteso:false})`:corpi di richiesta con codifica URL di analisi (dati inviati dai moduli HTML). `Extended:False` usa la libreria di querystring integrata, mentre` esteso:True` usa la libreria `QS`, che consente strutture di oggetti più complesse. <p> * `BodyParser.json ()`:parses JSON Richiedi corpi. <p> * `Express.static ('pubblico')`:serve file statici (HTML, CSS, JavaScript) dalla directory `Public '. Qui è dove metteresti i tuoi file `login.html`,` style.css` e `script.js`. <p> 4. <b> Percorso per servire la pagina di accesso (`/`):</b> <p> * `app.get ('/', ...)`:definisce un percorso che gestisce ricevere richieste al percorso di root (`/`). <p> * `Res.sendFile (__ dirname + '/public/login.html')`:invia il file `login.html` al client. `__dirname` è la directory corrente dello script, garantendo che il percorso del file sia corretto. <p> 5. <b> Percorso per la gestione dell'invio di accesso (`/login`):</b> <p> * `app.post ('/login', ...)`:definisce un percorso che gestisce le richieste pubblicate al percorso `/login`. È qui che vengono inviati i dati del modulo di accesso. <p> * `req.body`:contiene i dati inviati dal modulo. Grazie a `Body-Parser`, puoi accedere al nome utente e alla password utilizzando` req.body.username` e `req.body.password`. <p> * `Users.Find (u => U.UserName ===Nome utente)`:cerca l'array `utenti 'per un utente con il nome utente corrispondente. (In una vera applicazione, avresti interrogato il tuo database.) <p> * <b> Hashing password con `bcrypt`:</b> <p> * `bcrypt.compare (password, user.passwordhash)`:questa è la parte cruciale per la sicurezza. Confronta la password in chiaro inserito dall'utente con l'hash * memorizzato della password. `BCrypt` gestisce automaticamente il processo di salting. Questo è molto più sicuro che archiviare le password in chiaro. <p> * <b> Logica di autenticazione:</b> <p> * Se viene trovato un utente e la password corrispondesse, in genere imposteresti un cookie di sessione per autenticare l'utente e reindirizzarli in un'area di accesso. In questo esempio, invia solo un "Accedi di successo!" messaggio. <p> * Se l'utente non viene trovato o la password non corrisponde, invia una risposta all'errore (`401 non autorizzato '). Il JavaScript front-end può quindi visualizzare questo messaggio di errore all'utente. <p> 6. <b> Route per la registrazione </b> <p> * Aggiunta un percorso di registro per consentire l'aggiunta di nuovi utenti al sistema <p> * La password non viene archiviata ma hash per garantire la sicurezza <p> 7. <b> Avvio del server:</b> <p> * `app.listen (porta, ...)`:avvia il server Express sulla porta specificata. <p> <p> <b> Considerazioni importanti e migliori pratiche di sicurezza:</b> <p> <p> * <b> Database:</b> Sostituire l'array `utenti" in memoria con un database reale (ad es. MongoDB, PostgreSQL, MySQL). Utilizzare una libreria di database (come Mongoose per MongoDB o Sequelis per PostgreSQL/MySQL) per interagire con il database. <p> * <b> Hashing password:</b> * Non* memorizzare le password in chiaro. Utilizzare sempre un algoritmo di hashing di password forte come `bcrypt` (come mostrato nell'esempio). `BCrypt` include la salatura, il che rende molto più difficile per gli aggressori decifrare le password anche se ottengono il database. Utilizzare `bcrypt.hash ()` to hash password quando gli utenti si registrano e `bcrypt.compare ()` per confrontare la password immessa con l'hash memorizzato durante l'accesso. <p> * <b> Convalida input:</b> Convalida l'input dell'utente sia sul lato client (per l'esperienza utente) che sul lato server (per sicurezza). Sanitizzare l'input per prevenire gli attacchi di iniezione (ad es. Iniezione SQL, XSS). <p> * <b> Gestione della sessione:</b> Utilizzare sessioni per mantenere lo stato di accesso utente. Dopo l'accesso corretto, memorizzare un ID di sessione in un cookie sul browser del client. Sulle richieste successive, il server può utilizzare l'ID sessione per identificare l'utente senza richiedere loro di accedere di nuovo. Librerie come `Express-Session` possono aiutare a gestire le sessioni. <p> * <b> https:</b> Utilizzare sempre HTTPS (SSL/TLS) per crittografare la comunicazione tra il client e il server. Ciò impedisce gli attacchi di intercettazione e uomo-in-the-middle. Ottenere un certificato SSL da un'autorità di certificazione (ad esempio, crittografiamo). <p> * <b> Gestione degli errori:</b> Implementare la corretta gestione degli errori per evitare che le informazioni sensibili vengano esposte nei messaggi di errore. Errori di registro in modo sicuro. <p> * <b> Protezione CSRF:</b> Proteggi gli attacchi di falsificazione della richiesta di siti (CSRF) utilizzando token CSRF. <p> * <b> Limitazione della velocità:</b> Implementare la limitazione della velocità per prevenire gli attacchi di forza bruta all'endpoint di accesso. <p> <p> <b> Come eseguire l'esempio:</b> <p> <p> 1. <b> Crea la directory del progetto:</b> Crea una directory per il tuo progetto (ad esempio, `login-app`). <p> 2. <b> Crea file:</b> Crea i seguenti file all'interno della directory del progetto:<p> * `login.html` (copia il codice HTML) <p> * `style.css` (copia il codice CSS) <p> * `script.js` (copia il codice JavaScript) <p> * `server.js` (o` app.js`, o come si desidera nominare il tuo file server node.js - copia il codice node.js) <p> * Crea una cartella `public` e metti` login.html`, `style.css` e` script.js` al suo interno. <p> 3. <b> Installazione di dipendenze:</b> Apri un terminale nella directory del progetto ed esegui:<p> `` `Bash <p> NPM Installa Express Body-Parser BCrypt <p> `` ` <p> 4. <b> Esegui il server:</b> Nel terminale, esegui:<p> `` `Bash <p> Node Server.js <p> `` ` <p> 5. <b> Apri nel browser:</b> Apri il tuo browser Web e vai su `http:// localhost:3000`. Dovresti vedere la pagina di accesso. <p> <p> Ricorda che questo è un esempio di base. Per un'applicazione del mondo reale, dovrai implementare misure di integrazione del database, gestione delle sessioni e sicurezza adeguate. <ul class="mhjkhjlj"> <li> <a class='LinkPrevArticle' href='https://www.354353.com/domanda/password/1590860.html' >Come si accede alla cartella password se la directory si trova in bloccata. Mi sono bloccato da tutte le mie unità usando la cartella. Può guadagnare di nuovo? </a> <li> <a class='LinkNextArticle' href='https://www.354353.com/domanda/password/1590867.html' >Cosa dimentica la tua password su Whoshere? </a> </ul> <div class="deep"> <div class="guanggadsadswqew"><script language='javascript' src='/AD/it3.js'></script></div> <div class="guanggadsadswqew1"></div> </div> <div class="xiangguanleitong"> <div class="vbfdghgjt65f"><h4>Informazioni correlate</h4></div> <ul> <li><a href="https://www.354353.com/domanda/PC-Risoluzione-dei-problemi/1506866.html" target="_blank">Come eseguire l'upscaling delle immagini dalla diffusione stabile </a></li><li><a href="https://www.354353.com/domanda/Supporto-Notebook/1582376.html" target="_blank">Quanto è buono il laptop Dell 1525-106W? </a></li><li><a href="https://www.354353.com/domanda/PC-Support/1368292.html" target="_blank">Come importare MTS file in Final Cut Express 3.5 </a></li><li><a href="https://www.354353.com/domanda/Convertire-i-file/1365358.html" target="_blank">Come convertire MP3 in file WAV in Linux </a></li><li><a href="https://www.354353.com/domanda/PC-Support/1371568.html" target="_blank">Come eliminare le voci non avvio in Msconfig in Vista </a></li><li><a href="https://www.354353.com/domanda/PC-Risoluzione-dei-problemi/1508004.html" target="_blank">Guida tecnica:articoli pratici, guide all'acquisto di gadget, elenchi tecnici </a></li><li><a href="https://www.354353.com/domanda/PC-Risoluzione-dei-problemi/1497232.html" target="_blank">Cosa sono gli obiettivi o i trofei di Snapchat? </a></li><li><a href="https://www.354353.com/domanda/virus-informatici/1362404.html" target="_blank">Come controllare per virus Conficker </a></li> </ul> </div> </div> </div> <div class="woshiyouleirog"> <div class="zxtjianasd"> <div class="bidssdfjm3"><h4>Articoli consigliati</h4></div> <div class="dasdcdfurit33"> <ul> <li><a href="https://www.354353.com/domanda/password/1591163.html" target="_blank">Quando selezioni ricorda la tua password in hotmail ma non lo fa? </a></li><li><a href="https://www.354353.com/domanda/password/1398136.html" target="_blank">Come rimuovere un amministratore locale password </a></li><li><a href="https://www.354353.com/domanda/password/1507440.html" target="_blank">Come proteggere con password un file zip in Windows </a></li><li><a href="https://www.354353.com/domanda/password/1552341.html" target="_blank">Cos'è la password dell'amministratore? </a></li><li><a href="https://www.354353.com/domanda/password/1539916.html" target="_blank">Quale autenticazione utilizza anche l'algoritmo DES? </a></li><li><a href="https://www.354353.com/domanda/password/1590680.html" target="_blank">Quando un client Windows 95 è configurato come parte del dominio, la password verrà autenticata da cosa? </a></li><li><a href="https://www.354353.com/domanda/password/1591488.html" target="_blank">Esiste un modo per proteggere con password a unità penna in modo che nessuno possa aprirla senza la password? </a></li><li><a href="https://www.354353.com/domanda/password/1398128.html" target="_blank">Come trovare la password del server </a></li><li><a href="https://www.354353.com/domanda/password/1498884.html" target="_blank">Come trovare la password Wi-Fi su Android </a></li><li><a href="https://www.354353.com/domanda/password/1523958.html" target="_blank">Come si accede a un dominio? </a></li> </ul> </div> </div> <div class="guanggandgsa32a"> </div> <div class="huosirengs"> </div> </div> </div> <div class="dsadsafa-da"> <p class="sdqwfwe42">  </p> <p class="vbnhg654">Domanda © www.354353.com</p> <p class="iop8iud"> </p> </div> </div> </body> </html>