> 웹 프론트엔드 > JS 튜토리얼 > 속도 및 MySQL과 함께 여권 사용

속도 및 MySQL과 함께 여권 사용

尊渡假赌尊渡假赌尊渡假赌
풀어 주다: 2025-03-11 11:04:09
원래의
754명이 탐색했습니다.

속도는 약속 기반 Node.js Orm입니다. PostgreSQL, MySQL, MariaDB, Sqlite 및 MSSQL과 함께 사용할 수 있습니다. 이 튜토리얼에서는 웹 앱 사용자를위한 인증을 구현할 것입니다. 그리고 우리는 노드 및 MySQL과 함께 인기있는 인증 미들웨어 인 Passport를 사용하여 사용자 등록 및 로그인을 구현합니다.

시작하기

컴퓨터에 다음과 같은 설치를해야합니다. Express Framework이므로 우리는 필요한 것을 설치하기 시작합니다.

1. package.json 파일을 생성

앱의 디렉토리를 만듭니다. 이 디렉토리 내부에서 터미널 또는 명령 프롬프트에서 실행하십시오.

npm init

이것은 NPM 종속성 관리자를 초기화합니다.

  • name 에 대한 공간없이 앱 이름을 입력 할 것입니다. 를 입력하려면 버전 를 사용하려면 를 입력하려면
  • for
  • for
  • 를 입력하려면 버전 . server.js . 설치 의존성

    이 튜토리얼의 주요 종속성은 다음과 같습니다.

    • Express
    • sequelize
    • mysql
    • Passport
    • 여권 지역 전략
    • bcryptjs
    • express honthbars for the expressbars. views

    터미널 또는 명령 프롬프트에서 설치하려면 다음을 설치하려면 다음과 같이 설치합니다. -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 파일을 가져 와서 가입 경로를 정의하는 것입니다.

    var authcontroller = require ( '../ controllers/authcontroller.js');
    module.exports = function (app) {
    app.get ( '/signup', AuthController.signup);
    };

    이제 server.js 에서이 경로를 가져 와서 server.js 에서 앱을 전달하면 다음 줄을 추가합니다. reque ( './ app/lours/auth.js') (app);

    run this :

    node server.js

    지금 http : // localhost : 5000/가입을 방문하면 가입 양식이 표시됩니다.

    속도 및 MySQL과 함께 여권 사용

    로그인 양식의 단계를 반복하겠습니다. 이전과 마찬가지로, 우리는 우리의보기 폴더에서 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 블록 :

    module.exports = function (passport, user) {
    }

    이 블록 내부에 위치한이 초기화>

    {
    usernamefield : 'email',
    passwordfield : 'password',
    passreqtocallback : true // 우리가 콜백
    },
    })

    (여권 변수)는 다음과 같습니다.

    마지막 변수 사용자 , 사용자가 이미 존재하는지 확인하고, 그렇지 않은 경우

    user.findone ({
    where : {
    email : email

    }). 완료 (null, false, {
    메시지 : '이메일은 이미 가져 왔습니다'
    });
    } else
    {

    var userpassword = generatehash (password);
    var data =
    {
    이메일 :
    password : userpassword,
    firstname : req.body.firstname,
    req.body.lastname.lastname
    };
    user.create (data) .then (함수 (newuser, created) {
    if (! newuser) {newuser) {
    return (null, false);
    }
    if (newuser) {
    doing (null, newuser);
    }
    }); }
    });

    req.body 객체는 가입 양식의 입력을 포함합니다.

    귀하의 경로 import . models.user);

    귀하의 server.js 는 이제 다음과 같이 보일 것입니다 :

    var express = require ( 'express');
    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);
    });

    이제 우리는 실제로 /signup 경로에 전략을 적용합니다.

    먼저, app/lours/auth.js 로 이동하여 이와 같이 가입하기 위해 게시하기위한 경로를 추가합니다.

    app.post ( '/signup', passport.authenticate ( 'local-signup',
    success ',
    signurect :'/signurect : '
    }
    ));

    여권이 필요 하므로이 방법으로 전달해야합니다. 이 스크립트에서 여권을 가져 오거나 Server.js에서 전달할 수 있습니다. 후자를하자.

    이 파일에서 내보낸 기능을 수정하여 app/lours/auth.js 여권을 매개 변수로 갖습니다. app/loutes/auth.js 의 코드는 수정 후 이와 같이 보일 것입니다.

    var authcontroller = require ( '../ 컨트롤러/authcontroller.js');
    module.exports = function (app, passport) {
    app.get ( '/signup', authcontroller.signup); authController.signin);
    app.post ( '/signup', passport.authenticate ( 'local-signup', {
    successRedirect : '/dashboard',
    defeureredirect : '/signup'


    Module.exports 블록, 다른 모든 코드 줄 아래.

    app.get ( '/dashboard', isloggedin, authcontroller.dashboard);

    이제 앱을 실행하고 대시 보드 페이지를 방문하려고하면 로그인하지 않으면 로그인 페이지로 리디렉션되어야합니다.

    whew! 최종 부분을 구현해야 할 때입니다.

    먼저, 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿