Ако сте икада користили свој Гоогле налог да бисте се пријавили на апликацију, можда сте приметили колико је то лако. Потребно је да кликнете само на једно дугме и не морате да уносите своју е-пошту или лозинку. Иако ово изгледа једноставно, оно што се дешава испод хаубе је прилично сложено. Међутим, алати као што је Пасспорт то олакшавају.
У овом водичу ћете научити како да имплементирате Гоогле аутентификацију у Ноде користећи Пасспорт и Екпресс.
Шта је пасош?
Пасош (или Пасспорт.јс) је средњи софтвер за аутентификацију чвора који пружа више од 500 стратегија за аутентификацију корисника укључујући друштвену аутентификацију користећи платформе као што су Гоогле и Твиттер.
Користићете пасош-гоогле-оаутх2 стратегија за аутентификацију корисника на Гоогле-у.
Креирање Гоогле система за аутентификацију у Ноде-у
Ово је преглед система аутентификације који ћете креирати:
- Када корисник кликне на дугме за пријаву, биће послат на страницу за пријављивање на Гоогле где ће се пријавити.
- Гоогле ће преусмерити корисника на вашу апликацију са токеном за приступ. Приступни токен вам даје дозволу да приступите информацијама о профилу тог корисника.
- Пошаљите токен за приступ Гоогле-у да бисте добили податке о профилу.
- Креирајте новог корисника или преузмите постојећег из базе података.
- Користите ЈВТ за заштиту осетљивих рута.
Како подесити Гоогле аутентификацију у НодеЈС-у користећи пасош
Пратите кораке у наставку да бисте овластили кориснике са Гоогле ОАутх-ом,
Корак 1: Направите ИД Гоогле клијента и тајну тајну клијента
Пре него што користите Гоогле за пријављивање корисника у своју апликацију, потребно је да региструјете своју апликацију код Гоогле-а да бисте добили ИД клијента и тајну клијента које ћете користити приликом конфигурисања пасоша.
Пријавите се на Гоогле Цлоуд конзола и пратите следеће кораке да бисте регистровали своју апликацију.
Креирајте нови пројекат. На траци менија изаберите Акредитиви и на падајућој листи изаберите ИД ОАутх клијента.
За тип апликације изаберите веб апликација. Додајте жељено име за своју апликацију у поље Име.
У оквиру овлашћених УРИ-ја за преусмеравање користите http://localhost: 3000 и http://localhost: 3000/аутх/гоогле/цаллбацк за овлашћене УРИ-је за преусмеравање.
Кликните Креирај да креирате ОАутх клијента. Пошто су акредитиви апликације осетљиви, мораћете да креирате а .енв датотеку и додајте ИД клијента и тајну клијента у њу.
ЦЛИЕНТ_ИД =ЦЛИЕНТ_СЕЦРЕТ =
Корак 2: Подесите сервер чворова
Направите фасциклу, усер-гоогле-аутх, и дођите до њега.
мкдир усер-гоогле-аутх
ЦД корисник-гоогле-аутх
Иницијализујте нпм створити пацкаге.јсон.
нпм инит -и
Пошто ћете користити експрес за креирајте сервер, инсталирајте га тако што ћете покренути следећу команду.
нпм инсталл екпресс
Отворите фасциклу са жељеним уређивачем текста и креирајте нову датотеку апп.јс. Служиће као улазна тачка ваше апликације.
Креирајте НодеЈС сервер у апп.јс.
цонст екпресс = рекуире("екпресс");
цонст апп = екпресс();
цонст ПОРТ = 3000;
апп.листен (ПОРТ, () => {
цонсоле.лог(`Слушање на порту ${ПОРТ}`);
});
Корак 2: Подесите МонгоДБ
Корисничке податке примљене од Гоогле-а чуваћете у а МонгоДБ база података. Пре него што сачувате корисничке информације, потребно је да дефинишете структуру у којој ће се подаци чувати. Монгоосе је савршен за ово. Пружа прилично једноставан начин креирања модела података.
Инсталирај Мунгос.
нпм инсталл монгоосе
Креирајте нову датотеку усерМодел.јс, и креирајте корисничку шему.
цонст монгоосе = рекуире("мунгоосе");
цонст { Шема } = монгоосе.модел;
цонст УсерСцхема = нова шема({
гоогле: {
ид: {
тип: стринг,
},
име: {
тип: стринг,
},
емаил: {
тип: стринг,
},
},
});
цонст Корисник = монгоосе.модел("Корисник", Корисничка шема);
модуле.екпортс = Корисник;
Ин усерМодел.јс, увезли сте мунгоса и направили нову шему.
Имајте на уму да групишете информације са Гоогле-а. Ово је посебно корисно када користите и друге методе аутентификације, а корисник користи више од једног. То олакшава спречавање двоструке регистрације.
Затим креирајте дб.јс.
цонст монгоосе = рекуире("мунгоосе");
Мунгос. Обећање = глобално. Промисе;
цонст дбУрл = "монгодб://лоцалхост/усер";
цонст цоннецт = асинц () => {
монгоосе.цоннецт (дбУрл, { усеНевУрлПарсер: труе, усеУнифиедТопологи: труе });
цонст дб = мунгоосе.цоннецтион;
дб.он("грешка", () => {
цонсоле.лог("не могу да се повежем");
});
дб.онце("отвори", () => {
цонсоле.лог("> Успешно повезан са базом података");
});
};
модуле.екпортс = { повезивање };
Повежите се са базом података у апп.јс.
цонст екпресс = рекуире("екпресс");
цонст апп = екпресс();
цонст ПОРТ = 3000;
цонст дб = рекуире("./дб");
дб.цоннецт();
апп.листен (ПОРТ, () => {
цонсоле.лог(`Слушање на порту ${ПОРТ}`);
});
Корак 3: Подесите пасош
Инсталирај пасош и пасош-гоогле-оаутх2.
нпм и пасош пасош-гоогле-оаутх2
Креирајте нову датотеку, пасспортЦонфиг.јс, и увезите Гоогле стратегију из пасош-гоогле-оаутх2 и усерМодел.јс.
цонст ГооглеСтратеги = рекуире("пасспорт-гоогле-оаутх2").Стратегија;
цонст Усер = рекуире("./усерМодел");
Користите своје акредитиве апликације за конфигурисање пасош са Гоогле ОАутх-ом.
модуле.екпортс = (пасош) => {
пасспорт.усе (нова ГооглеСтратеги({
цлиентИД: процесс.енв. ИД КЛИЈЕНТА,
цлиентСецрет: процесс.енв. ЦЛИЕНТ_СЕЦРЕТ,
цаллбацкУРЛ: " http://localhost: 3000/аутх/гоогле/цаллбацк",
пассРекТоЦаллбацк: истина
},
асинц (захтев, аццессТокен, рефресхТокен, профил, готово) => {
покушати {
нека постојећиУсер = чекај Усер.финдОне({ 'гоогле.ид': профиле.ид });
// ако корисник постоји врати корисника
ако (постојећи корисник) {
врати урађено (нулл, постојећиКорисник);
}
// ако корисник не постоји креирајте новог корисника
цонсоле.лог('Креирање новог корисника...');
цонст невУсер = нови корисник({
метод: 'гоогле',
гоогле: {
ид: профиле.ид,
име: профиле.дисплаиНаме,
емаил: профиле.емаилс[0].валуе
}
});
аваит невУсер.саве();
врати урађено (нулл, невУсер);
} ухватити (грешка) {
повратак урађен (грешка, нетачно)
}
}
));
}
Када добијете информације о профилу од Гоогле-а, проверите да ли корисник постоји у бази података. Ако то ураде, једноставно вратите пронађеног корисника. Ако је корисник нов, креирајте нови документ у бази података и вратите креираног корисника.
Имајте на уму да радите са енв променљиве па користите нпм пакет дотенв да им приступите у својој апликацији.
Инсталирај дотенв.
нпм инсталл дотенв
Користите дотенв ин апп.јс.
Захтевај("дотенв").цонфиг()
Ин апп.јс,пасс пасош до пасспортЦонфиг.јс
цонст пасош = захтева ("пасош");
рекуире("./пасспортЦонфиг")(пасош);
Корак 4: Креирајте руте за аутентификацију
Потребна су вам три пута:
- Преусмерите корисника на страницу за пријављивање на Гоогле да добије токен за приступ.
- Преузмите корисничке податке користећи примљени токен за приступ.
- Преусмерите корисника на страницу профила након успешна аутентификација.
// Преусмери корисника на страницу за пријављивање на Гоогле
апп.гет(
„/аутх/гоогле“,
пасспорт.аутхентицате("гоогле", { опсег: ["е-пошта", "профил"] })
);
// Преузми корисничке податке користећи примљени токен за приступ
апп.гет(
„/аутх/гоогле/цаллбацк“,
пасспорт.аутхентицате("гоогле", {сессион: фалсе }),
(рек, рес) => {
рес.редирецт("/профил/");
}
);
// рута профила након успешног пријављивања
апп.гет("/профиле", (рек, рес) => {
цонсоле.лог (рек);
рес.сенд("Добродошли");
});
Корак 5: Заштитите приватне руте
Сада када сте се пријавили као корисник, како можете ограничити неке делове ваше апликације само на аутентификоване кориснике? Један од начина да се то уради је коришћење ЈСОН веб токена (ЈВТ). ЈВТ-ови нуде безбедан начин преношења информација. До ауторизовати кориснике користећи ЈВТ, ваша апликација ће:
- Генеришите токен користећи корисничке податке.
- Проследите токен кориснику (корисник ће вратити токен са захтевима за које је потребна ауторизација).
- Потврдите да је токен послат назад.
- Одобрите приступ кориснику ако је представљени токен важећи.
Инсталирај јсонвебтокен за рад са ЈВТ-овима.
нпм инсталл јсонвебтокен
Ин апп.јс, увоз јсонвебтокен.
цонст јвт = рекуире("јсонвебтокен")
Измените УРЛ адресу Гоогле повратног позива да бисте потписали корисника и генерисали токен.
апп.гет(
„/аутх/гоогле/цаллбацк“,
пасспорт.аутхентицате("гоогле", {сессион: фалсе }),
(рек, рес) => {
јвт.сигн(
{ корисник: рек.усер },
"тајни кључ",
{ екпиресИн: "1х" },
(ерр, токен) => {
ако (грешка) {
врати рес.јсон({
токен: нулл,
});
}
рес.јсон({
жетон,
});
}
);
}
);
Ако се пријавите, добићете токен.
Следеће, користите пасош-јвт, ЈВТ стратегија коју обезбеђује Пасспорт за верификацију токена и ауторизацију корисника.
нпм инсталл пасспорт-јвт
Ин пасспортЦонфиг.јс, додајте стратегију ЈВТ.
цонст ЈвтСтратеги = рекуире("пасспорт-јвт").Стратегија;
цонст { ЕктрацтЈвт } = рекуире("пасспорт-јвт");
модуле.екпортс = (пасош) => {
пасспорт.усе (нова ГооглеСтратеги(
// Гугл стратегија
);
пасош.употреба(
нова ЈвтСтратеги(
{
јвтФромРекуест: ЕктрацтЈвт.фромХеадер("ауторизација"),
сецретОрКеи: "сецретКеи",
},
асинц (јвтПаилоад, готово) => {
покушати {
// Издвој корисника
цонст усер = јвтПаилоад.усер;
урађено (нулл, корисник);
} ухватити (грешка) {
урађено (грешка, нетачно);
}
}
)
);
}
Овде извлачите токен из заглавља ауторизације где је ускладиштено—што је много сигурније него да га чувате у телу захтева.
Када је токен верификован, кориснички објекат се шаље назад у тело захтева. Да бисте овластили кориснике, додајте међуверски софтвер за ЈВТ аутентификацију пасоша заштићеним рутама.
апп.гет(
"/профил",
пасспорт.аутхентицате("јвт", {сессион: фалсе }),
(рек, рес, нект) => {
рес.сенд("Добродошли");
}
);
Сада ће приступ добити само захтеви који дају важећи токен.
Следећи кораци
Овај водич вам је показао како можете да користите Пасспорт за пријављивање корисника у вашу апликацију помоћу њиховог Гоогле налога. Коришћење пасоша је много једноставније од других образаца и уштедећете много времена кроз његово коришћење.
Пасош такође пружа друге стратегије аутентификације које се користе са другим провајдерима идентитета, као што су Твиттер и Фацебоок. Дакле, вреди проверити и њих.
Аутентификација корисника у НодеЈС-у помоћу пасоша и МонгоДБ-а
Реад Нект
Повезане теме
- Програмирање
- Безбедност
- Програмирање
- Алати за програмирање
- Гоогле
- Гоогле Аутхентицатор
О аутору
Мери Гатони је програмер софтвера са страшћу за стварање техничког садржаја који није само информативан већ и привлачан. Када не кодира или пише, ужива у дружењу са пријатељима и на отвореном.
Претплатите се на наш билтен
Придружите се нашем билтену за техничке савете, рецензије, бесплатне е-књиге и ексклузивне понуде!
Кликните овде да бисте се претплатили