속도는 약속 기반 Node.js Orm입니다. PostgreSQL, MySQL, MariaDB, Sqlite 및 MSSQL과 함께 사용할 수 있습니다. 이 튜토리얼에서는 웹 앱 사용자를위한 인증을 구현할 것입니다. 그리고 우리는 노드 및 MySQL과 함께 인기있는 인증 미들웨어 인 Passport를 사용하여 사용자 등록 및 로그인을 구현합니다.
컴퓨터에 다음과 같은 설치를해야합니다. Express Framework이므로 우리는 필요한 것을 설치하기 시작합니다.
앱의 디렉토리를 만듭니다. 이 디렉토리 내부에서 터미널 또는 명령 프롬프트에서 실행하십시오.
이것은 NPM 종속성 관리자를 초기화합니다.
이 튜토리얼의 주요 종속성은 다음과 같습니다.
터미널 또는 명령 프롬프트에서 설치하려면 다음을 설치하려면 다음과 같이 설치합니다. -save
npm Express-Session을 설치하십시오--save
npm bcryptjs ---save
npm Express-Handlebars 설치--save
npm 설치 mysql2 설치--save
이 프로젝트에 git을 사용하는 경우 express 를 만듭니다. 그런 다음 Express를 초기화 한 다음 변수 여권 모듈과 여권 및 modelize.sequelize 동기화에 할당합니다. 이 모든 것이 잘 있는지 확인하기 위해 다음을 실행합니다. Model
다음으로해야 할 일은 기본적으로 사용자 테이블 인 사용자 모델을 만드는 것입니다. 여기에는 기본 사용자 정보가 포함됩니다.
모델 폴더에서 파일을 생성하고 user.js 이름을 지정합니다. 이 파일의 전체 경로는 app/models/user.js .
user.js 파일을 열고 다음 코드를 추가해야합니다. AutoinCrement : true,
primarykey : true,
유형 : sequelize.integer
},
firstName : {
type : sequelize.string,
notempty : true
},
lastname : {
type : sequelize.string,
},
estempty :
: sequelize.text
},
about : {
type : sequelize.text
},
이메일 : {
type : sequelize.string,
validate : {
iseMail : true
}
},
allown. last_login : {
type : sequelize.date
},
상태 :
유형 :
유형 : sequelize.enum ( 'active', 'inactive'),
defaultValue : 'active'
}
});
사용자;
친숙한 " 사이트가 라이브로 표시됩니다. 멋진! 데이터베이스 는 괜찮아 보인다 "메시지. 이것은 우리의 속편 모델이 성공적으로 동기화되었음을 의미하며, 데이터베이스를 확인하면 열이 지정된 경우 사용자 테이블이 표시되어야합니다. up.
가장 먼저해야 할 일은 AuthController 파일을 가져 와서 가입 경로를 정의하는 것입니다.
이제 server.js 에서이 경로를 가져 와서 server.js 에서 앱을 전달하면 다음 줄을 추가합니다. reque ( './ app/lours/auth.js') (app);
run this :
지금 http : // localhost : 5000/가입을 방문하면 가입 양식이 표시됩니다.
로그인 양식의 단계를 반복하겠습니다. 이전과 마찬가지로, 우리는 우리의보기 폴더에서 signin.hbs 라는 파일을 만들고 다음 html 코드를 붙여 넣습니다. & lt; link rel = "stylesheet"href = "/styles.css"& gt;
& lt;/head & gt;
& lt; body & gt;
& lt; h2 & gt; sequelize and mysql & lt;/h2 & gt를 가진 여권; action = "signin"& gt;
& lt; label for = "email"& gt; email address & lt;/labt;/lad;/gt;
& lt; input class = "text"name = "email"/& gt;
& lt; label for = "password"& gt "& gt & lt; /& gt;
& lt; input class = "btn"type = "제출"value = "로그인"/gt;
& gt;/gt;
& lt;/body & gt;
& lt;/html & gt;
그런 다음, 간판을위한 컨트롤러를 추가하십시오. app/컨트롤러/authcontroller.js . 이 :
bcryptjs , 우리는 암호를 보호해야합니다.
module.exports 블록 :
이 블록 내부에 위치한이 초기화>
(여권 변수)는 다음과 같습니다.
마지막 변수 사용자 , 사용자가 이미 존재하는지 확인하고, 그렇지 않은 경우
req.body 객체는 가입 양식의 입력을 포함합니다.
귀하의 경로 import . models.user); 귀하의 server.js 는 이제 다음과 같이 보일 것입니다 : 이제 우리는 실제로 /signup 경로에 전략을 적용합니다. 먼저, app/lours/auth.js 로 이동하여 이와 같이 가입하기 위해 게시하기위한 경로를 추가합니다. 여권이 필요 하므로이 방법으로 전달해야합니다. 이 스크립트에서 여권을 가져 오거나 Server.js에서 전달할 수 있습니다. 후자를하자. 이 파일에서 내보낸 기능을 수정하여 app/lours/auth.js 여권을 매개 변수로 갖습니다. app/loutes/auth.js 의 코드는 수정 후 이와 같이 보일 것입니다. Module.exports 블록, 다른 모든 코드 줄 아래. 이제 앱을 실행하고 대시 보드 페이지를 방문하려고하면 로그인하지 않으면 로그인 페이지로 리디렉션되어야합니다.
var app = express (); var passport = require ( 'passport');
var session = reving ( 'express-session');
app.use (Express.urlenCoded ({
확장 : true
})
);
app.use (express.json ());
// app.use ({
secret : 'keyboard',
resave :
save save
true
}); // 세션 비밀
app.use (passport.initialize ());
app.use (passport.session ()); // 핸들 바의 영구 로그인 세션
//
app.set ( 'views', './app/views');
app.engine ( 'hbs', exphbs.engine ({
extname : '.hbs',
defaultlayout : false,
layoutsdir : "보기/레이아웃/"
}));
app.set ( 'view engine', '.hbs');
app.get ( '/', function (req, res) {
res.send ( 'sequelize');
var models = 요구 사항 (
rouns) ;/ app/models ") authroute = require ( './ app/lours/auth.js') (app);
// 여권 전략
require ( './ app/config/passport/passport.js') (passport, models.user);
// sync database
models.secteLize.sync (). FINE ');
}). catch (function (err) {
console.log (err, "데이터베이스 업데이트! console.log (err);
});
success ',
signurect :'/signurect : '
}
));
module.exports = function (app, passport) {
app.get ( '/signup', authcontroller.signup); authController.signin);
app.post ( '/signup', passport.authenticate ( 'local-signup', {
successRedirect : '/dashboard',
defeureredirect : '/signup'
먼저, app/config/passport/passport.js
// local signin <br> passport.use ( 'local-signin', new localstrategy (<br> {<br> // by local strategy with wer wond wer wond, wer wond were were were were were were were were were were were were were were inwere, were will with were wonder indrade, <br> // 이메일 <br> usernamefield : 'email', <br> passwordfield : 'password', <br> passreqtocallback : true // 콜백 <br>}, <br> <br> 함수 (req, 이메일, 비밀번호, 완료) {<br> var user = var isvalidpassword = fortorm (userpass) {<br> return bcryprync (password) {<br> userPass); <br>} <br> user.findone ({<br> where : {<br> email : email : email <br>} <br>}). 그런 다음 (기능 (user) {<br> if (! user) {<br> return (null, false, {<br> restial, <br>}); password)) {<br> return (null, false, {<br> 메시지 : '잘못된 암호.'<br>}); <br>} <br> var userInfo = userInfo = userInfo = userInfo = userInfo = userInfo = userInfo = userInfo = userInfo = userInfo = userInfo = userInfo = userInfo = userInfo = userInfo = user.get (); {<br> 메시지 : '<br>}); <br>}); <br>}); <br>} <br>); <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <em> </em> <cod> isvalidpassword <em> <em> 기능은 bcrypt <em> bcrypt와 함께 입력 한 후 비밀번호를 비교합니다. </em> 세부 사항이 올바른 경우 사용자가 로그인됩니다. <p> 이제 <strong> lours/auth.js </strong>로 이동하여 <strong>/signin </strong> <em>. '/dashboard', <br> defeureredirect : '/signin'<br>} <br>)); <br> <br> <br> <br> <br> <br> auth> 가 완료되면 이렇게 보일 것입니다. {<br> app.get ( '/signup', authcontroller.signup); <br> app.get ( '/signin', authcontroller.signin); <br> app.post ( '/signup', passport.authenticate ( 'local-signup', <br> successredirect : '/swip', <br> )); <br> app.get ( '/dashboard', isloggedin, authcontroller.dashboard); <br> app.get ( '/logout', authcontroller.logout); <br> app.post ( '/signin', passport.autherticate ( 'local-signin', {<br> successect : '/dashboard', <br> '/signin'<br>} <br>)); <br> 기능 isloggedin (req, res, next) {<br> if (req.isauthenticated ()) <br> return next (); <br> res.redirect ( '/signin'); <br> <br> <br> <br> <p> 이제 앱을 실행하려고 시도해야합니다. 가입하는 동안 사용되면 http : // localhost : 5000/dashboard/<em>로 향합니다. </em> </p> <p>이 튜토리얼이 끝날 때 축하합니다! 우리는 MySQL 데이터베이스와 함께 후유증 및 여권을 성공적으로 사용했습니다. </p> <p> 응용 프로그램을 훨씬 더 매력적으로 만들기 위해 약간의 CSS 스타일을 추가 할 것입니다. 스타일링을위한 코드 와이 튜토리얼의 전체 코드는 Github에서 찾을 수 있습니다. </p> <h2> 결론 </h2> <p>이를 통해 Sequelize 및 MySQL을 사용하여 사용자를 인증하기 위해 여권 사용에 대한 튜토리얼을 마무리합니다. 속편은 노드를 사용할 때 MySQL을 다루는 데 정말 유용한 ORM입니다. 개인적으로 매우 유용하다는 것을 알았으며 다음 Node-MysQL 앱에서 사용하는 것을 고려해야합니다. </p> <p> <em>이 게시물은 Mary Okosun의 기여로 업데이트되었습니다. Mary는 Node.js, JavaScript, MySQL 및 NOSQL Technologies에 대한 전문 지식을 갖춘 나이지리아 라고스에 본사를 둔 소프트웨어 개발자입니다. </em> </p></em></p></em></em></cod>
위 내용은 속도 및 MySQL과 함께 여권 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!