【Node.js express】express-validator로 검증을 구현하고 통과한 값을 세션에 저장한다.
템플릿 엔진은 ejs. 프레임워크는 express
현재 상황
가입 전면 페이지 작성
1) express-validator를 설치합니다.
Dockerfile에 빌드시 express-validator를 설치하도록 설명.
참고
htps : // 코 m / 쇼_우 / ms / 0에 f3dfc7b07b5에 13 18
#express-validatorを追記
RUN npm install ejs\
express-validator
2) express-validator를 require한다. (분할 할당)
users.js
const { check, validationResult } = require('express-validator');
const check = 유효성 검사를 수행하는 함수
const validationResult = 실행 결과에 대한 정보 등을 관리하는 ResultFactory라는 객체를 생성하는 함수
가 저장됩니다.
3) 라우팅의 두 번째 인수에 조건 추가
users.js
[
// checkメソッドを使用してバリデーションを実行
// withMessageメソッドで弾かれた場合のmsgを設定
check('name').not().isEmpty().withMessage('nameEmpty'),
check('email').not().isEmpty().withMessage('emailEmpty'),
check('password').not().isEmpty().withMessage('passwordEmpty'),
check('password').isLength({ min: 7 }).withMessage('passwordUnder7'),
//バリデーションをカスタムで作成
check('password').
custom((value, { req }) => {
//一致した場合trueを返す
if (req.body.password === req.body.confirmPassword) {
return true;
}
}).withMessage('passwordNoMach')
],
4) 라우팅의 세 번째 인수에 유효성 검사 오류 처리 (클로저) 추가
users.js
function (req, res, next) {
//結果をerrorsに格納
const errors = validationResult(req);
//引っ掛かった場合
if (!errors.isEmpty()) {
console.log(errors)
}
console.log에서 errors 내용을 확인하십시오.
Result {
formatter: [Function: formatter],
errors: [
{
value: '',
msg: 'nameEmpty',
param: 'name',
location: 'body'
},
{
value: '',
msg: 'emailEmpty',
param: 'email',
location: 'body'
},
{
value: '1',
msg: 'passwordUnder7',
param: 'password',
location: 'body'
},
{
value: '1',
msg: 'passwordNoMach',
param: 'password',
location: 'body'
}
]
}
errors:errors:{}로 저장됩니다.
세 번째 인수의 전체 처리
users.js
function (req, res, next) {
const errors = validationResult(req);
//エラーオブジェクトをerrorsに格納。
if (!errors.isEmpty()) {
let messages = [];
errors.errors.forEach((error) => {
messages.push(error.msg);
//配列に格納
});
res.render('users/signup', { messages: messages })
} else {
req.session.name = req.body.name;
//セッションに格納
res.redirect("/home");
}
});
express-session 모듈을 이용한다.
//インストール
npm install express-session
app.js
//追記
const session = require("express-session");
//appオブジェクトにsession設定を組み込む。
// app = express()とルーティング設定の範囲に記載
app.use(session({
secret: "secretWord",
resave: false,
saveUninitialized: true,
cookie: { maxAge: 10 * 1000 }
}));
session({옵션})에서 express-session을 설정한다.
secret:
쿠키에 저장할 세션 ID를 서명하는 데 사용되는 비밀 단어.
resave
세션을 세션 저장소에 강제로 저장할지 여부를 설정합니다.
saveUninitialized
초기화되지 않은 세션을 강제로 저장할지 여부를 설정합니다.
쿠키
세션 ID의 쿠키 설정을 지정할 수 있습니다. maxAge: 보존 기간.
Reference
이 문제에 관하여(【Node.js express】express-validator로 검증을 구현하고 통과한 값을 세션에 저장한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sho_U/items/f31763fd6fea1e0d6999텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)