Käyttäjän rekisteröityminen ja kirjautuminen
Rakennatte käyttäjien rekisteröitymis- ja kirjautumistoiminnot, mukaan lukien salasanojen hajautuksen ja tunnistetietojen turvallisen tallennuksen.
Käyttäjän rekisteröityminen ja kirjautuminen on ilmainen Node.js-taustakehityksen bootcamp-oppitunti CoddyKitissä. Tämä on oppitunti 1/6. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Node.js-taustakehityksen bootcamp-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Node.js-taustakehityksen bootcamp-kurssilla on yhteensä 6 oppituntia.
Tervetuloa käyttäjien todentamiseen
Käyttäjän todentamisella varmistetaan käyttäjän henkilöllisyys. Se on olennainen osa lähes kaikkia sovelluksia, jotka käsittelevät henkilötietoja tai rajoitettuja toimintoja.
- Miksi se on tärkeää: Se suojaa käyttäjätilejä ja arkaluonteisia tietoja.
- Mitä käsittelemme: Rekisteröinti- ja kirjautumisprosessien rakentaminen alusta alkaen.
Käyttäjän rekisteröintiprosessi
Uuden käyttäjän rekisteröinti sisältää useita vaiheita uuden tilin luomiseksi:
- Käyttäjä antaa tunnistetietonsa (esimerkiksi käyttäjänimen, salasanan ja sähköpostiosoitteen).
- Syötetyt tiedot validoidaan (esimerkiksi vahva salasana ja yksilöllinen sähköpostiosoite).
- Salasana hajautetaan turvallisuuden vuoksi.
- Uuden käyttäjän tiedot (mukaan lukien hajautettu salasana) tallennetaan tietokantaan.
Miksi salasanat hajautetaan?
Salasanojen tallentaminen selväkielisenä on suuri tietoturvariski! Jos tietokantaan murtaudutaan, kaikki käyttäjien salasanat paljastuvat.
Hajautus muuntaa salasanan kiinteän pituiseksi lukukelvottomaksi merkkijonoksi. Se on yksisuuntainen prosessi, joten alkuperäistä salasanaa ei voi helposti palauttaa hajautusarvosta.
Node.js:ssä käytetään vahvaan salasanojen hajautukseen esimerkiksi bcrypt-kirjastoa, joka lisää hajautukseen myös 'salt'-arvon yleisten hyökkäysten estämiseksi.
Salasanojen hajauttaminen bcryptillä
bcrypt on suosittu kirjasto salasanojen turvalliseen hajauttamiseen. Se vaatii paljon laskentatehoa, mikä vaikeuttaa brute force -hyökkäyksiä.
Suorittakaa tämä esimerkki nähdäksenne hajautetun salasanan:
const bcrypt = require('bcrypt');
const password = "mySecretP@ssword";
const saltRounds = 10; // Cost factor for hashing (higher is slower/more secure)
async function hashPassword() {
try {
const hashedPassword = await bcrypt.hash(password, saltRounds);
console.log("Original: " + password);
console.log("Hashed: " + hashedPassword);
} catch (error) {
console.error("Error hashing:" + error.message);
}
}
hashPassword();
Hajautettujen tunnistetietojen tallentaminen
Hajautuksen jälkeen tietokantaan tulee tallentaa vain hajautettu salasana sekä muut käyttäjän tiedot, kuten sähköpostiosoite tai käyttäjänimi.
- ÄLÄ KOSKAAN tallenna salasanoja selväkielisinä.
- Hajautusarvo on jokaiselle salasanalle yksilöllinen, vaikka alkuperäiset salasanat olisivat samoja (salt-arvon ansiosta).
- Tätä hajautusarvoa käytetään vertailuun kirjautumisen aikana.
Käyttäjän kirjautumisprosessi
Kun käyttäjä yrittää kirjautua sisään, sovellus toimii seuraavasti:
- Käyttäjä antaa käyttäjänimensä tai sähköpostiosoitteensa sekä salasanansa.
- Sovellus hakee tietokannasta käyttäjän tietueen (mukaan lukien tallennetun hajautetun salasanan) käyttäjänimen tai sähköpostiosoitteen perusteella.
- Annettu salasana hajautetaan ja sitä verrataan tallennettuun hajautusarvoon.
- Jos arvot täsmäävät, käyttäjä todennetaan ja luodaan istunto tai tunnus.
Salasanojen tarkistaminen bcryptillä
Käyttäjän antaman salasanan ja tallennetun hajautusarvon yhteensopivuus tarkistetaan käyttämällä bcrypt.compare()-metodia. Se suorittaa hajautuksen ja vertailun turvallisesti.
Suorittakaa tämä koodi nähdäksenne salasanojen vertailun käytännössä:
const bcrypt = require('bcrypt');
// This hash would typically come from your database
const storedHash = "$2b$10$w090/qB2k6n0Y7o8p9q.u.0Z1X2Y3Z4A5B6C7D8E9F0G1H2I3J4K5L6M7N8O9P0Q1R";
const passwordAttempt = "mySecretP@ssword";
const wrongAttempt = "incorrectPassword";
async function comparePasswords() {
try {
const isMatch = await bcrypt.compare(passwordAttempt, storedHash);
console.log(`'${passwordAttempt}' matches: ${isMatch}`);
const isWrongMatch = await bcrypt.compare(wrongAttempt, storedHash);
console.log(`'${wrongAttempt}' matches: ${isWrongMatch}`);
} catch (error) {
console.error("Error comparing:" + error.message);
}
}
comparePasswords();
Tunnistetietojen turvallisen tallennuksen käytännöt
Pelkkien salasanojen hajauttamisen lisäksi myös muut tunnistetiedot on suojattava:
- API-avaimet ja tietokantojen URL-osoitteet: Tallentakaa ne ympäristömuuttujiin (esimerkiksi
.env-tiedostoihin), ei suoraan koodiin. - Arkaluonteiset käyttäjätiedot: Salaa erittäin arkaluonteiset tiedot tietokantaan tallennettaessa.
- Säännölliset päivitykset: Pidä hajautuskirjastot ja riippuvuudet ajan tasalla.
Todennusvirheiden käsittely
Kun rekisteröinti tai kirjautuminen epäonnistuu, anna käyttäjälle hyödyllisiä mutta yleisluontoisia virheilmoituksia. Näin mahdollisille hyökkääjille ei paljasteta liikaa tietoa.
- Ilmoituksen 'User not found' sijaan käytä ilmoitusta 'Invalid credentials'.
- Ilmoituksen 'Password incorrect' sijaan käytä myös ilmoitusta 'Invalid credentials'.
- Kirjaa yksityiskohtaiset virheet palvelimelle virheenkorjausta varten, mutta älä paljasta niitä asiakkaalle.
Pikatarkistus: salasanojen hajautus
Testaa ymmärryksesi siitä, miksi salasanojen hajautus on tärkeää tietoturvan kannalta.
Kertaus: rekisteröinti ja kirjautuminen
Tässä oppitunnissa opitte käyttäjän rekisteröinnin ja kirjautumisen perusvaiheet:
- Käsittelimme salasanojen tiivistämisen merkitystä
bcrypt-kirjastolla arkaluonteisten käyttäjätietojen suojaamiseksi. - Näitte, miten toteutetaan sekä rekisteröinnin yhteydessä tehtävä tiivistäminen että kirjautumisen yhteydessä tehtävä vertailu.
- Perehdyimme myös tunnistetietojen turvallisen tallentamisen parhaisiin käytäntöihin ja todennusvirheiden hallintaan asianmukaisesti.
Seuraavaksi perehdymme tilattoman todennuksen toteuttamiseen JSON Web Tokenien (JWT) avulla.
Opi JavaScript tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 22
- Oppitunnit
- 92
Usein kysytyt kysymykset
Onko oppitunti ”Käyttäjän rekisteröityminen ja kirjautuminen” ilmainen?
Kyllä – oppitunnin ”Käyttäjän rekisteröityminen ja kirjautuminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Node.js-taustakehityksen bootcamp-kurssin, päivitä CoddyKit PROhon. Node.js-taustakehityksen bootcamp-kurssilla on yhteensä 6 oppituntia.
Mitä opin oppitunnilla ”Käyttäjän rekisteröityminen ja kirjautuminen”?
Rakennatte käyttäjien rekisteröitymis- ja kirjautumistoiminnot, mukaan lukien salasanojen hajautuksen ja tunnistetietojen turvallisen tallennuksen. Harjoittelet Node.js-taustakehityksen bootcamp-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Node.js-taustakehityksen bootcamp-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Node.js-taustakehityksen bootcamp-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/6.
Kuinka kauan ”Käyttäjän rekisteröityminen ja kirjautuminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Node.js-taustakehityksen bootcamp-oppitunnilla?
Kyllä. Jokainen Node.js-taustakehityksen bootcamp-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Käyttäjän rekisteröityminen ja kirjautuminen
- JWT-tunnusten luonti ja validointi
- JWT tilattomaan todennukseen
- OAuth2-salasanavirran integrointi
- Roolipohjainen käyttöoikeuksien hallinta
- Roolipohjainen käyttöoikeuksien hallinta (RBAC)