Koa.js 验证密码 (jade) 呈现和重定向
Koa.js validating password (jade) render and redirect
我正在尝试在 mod_auth_openidc 库中自定义一个。
我在 koa 中渲染时遇到问题。当我用 express 写同样的东西时,这很容易,因为 jade 文件看起来像我在下面附加的 sam,我可以使用 res.redner.
现在当我 运行 我的代码时我只得到 JSON 输出:
{"username":"test@gmail.com","password":"asdasd"}
我的问题是当我执行验证密码时,如果用户输入了错误的密码我想留在当前页面,不要更改 url 并且只添加带有信息的 p
标签因为它在下面的 jade 文件中。
有什么想法吗?我知道 yield render('/views/login' ...
是错误的,但无论我试图在此处传递什么(即仅 /
),我都得到 500 或其他错误代码。
我有玉档:
doctype html
html(lang='en')
head
meta(charset='UTF-8')
link(href='/stylesheets/style.css', rel='stylesheet')
title Login Page
body
.header
div Title
.body-container
div
form.ng-pristine.ng-valid(method='POST', action='/')
.input-label
.input-container
input#username(type='text', name='username')
.input-container
input#password(type='password', name='password')
.buttons
input(type='hidden', name='ok', value='')
input(type='hidden', name='cancel', value='')
button#ping
span.words Sign In
span.loading_spinner
i.fa.fa-circle-o-notch.fa-spin
if errors
if errors.password
p.
Please enter a valid password
和js(koa)文件(快捷方式):
const koa = require('koa');
const body = require('koa-body');
const serve = require('koa-static');
let send = require('koa-send');
const Router = require('koa-router');
const app = koa();
const router = new Router();
var render = require('koa-render-jade')(__dirname);
router.get('/', function *(req, res) {
this.body = yield render('/views/login.jade');
});
function validatePassword(password) {
if (password == "secret") {
return true;
} else return false;
}
app.use(serve(path.join(__dirname, 'public')));
app.use(serve('/views/login.jade'));
var bodyParser = require('koa-body-parser');
app.use(bodyParser());
router.post('/', function *(res, req) {
this.body = this.request.body;
if (validatePassword(this.body.password)) {
console.log("working");
this.response.redirect("www.google.com");
} else {
console.log("not working");
yield render('/views/login', {
title: 'Login',
queryParams: this.body.query,
agency: this.body.agency,
email: this.body.email,
errors: {
"password": true
}
});
}
});
@UPDATE - 我通过重定向进行了管理,只有 "render part" 仍然是个问题。
Jade 文件保持原样。
koa js文件:
var bodyParser = require('koa-body-parser');
app.use(bodyParser());
router.post('/', function *() {
if (validatePassword(this.request.body.password)) {
this.response.redirect("www.google.com");
} else {
this.body = yield render('/views/login', {
title: 'Login',
queryParams: this.request.query,
agency: this.request.agency,
email: this.request.email,
errors: {
"password": true
}
});
}
});
对我来说很好用。希望对大家有所帮助。
我正在尝试在 mod_auth_openidc 库中自定义一个。
我在 koa 中渲染时遇到问题。当我用 express 写同样的东西时,这很容易,因为 jade 文件看起来像我在下面附加的 sam,我可以使用 res.redner.
现在当我 运行 我的代码时我只得到 JSON 输出:
{"username":"test@gmail.com","password":"asdasd"}
我的问题是当我执行验证密码时,如果用户输入了错误的密码我想留在当前页面,不要更改 url 并且只添加带有信息的 p
标签因为它在下面的 jade 文件中。
有什么想法吗?我知道 yield render('/views/login' ...
是错误的,但无论我试图在此处传递什么(即仅 /
),我都得到 500 或其他错误代码。
我有玉档:
doctype html
html(lang='en')
head
meta(charset='UTF-8')
link(href='/stylesheets/style.css', rel='stylesheet')
title Login Page
body
.header
div Title
.body-container
div
form.ng-pristine.ng-valid(method='POST', action='/')
.input-label
.input-container
input#username(type='text', name='username')
.input-container
input#password(type='password', name='password')
.buttons
input(type='hidden', name='ok', value='')
input(type='hidden', name='cancel', value='')
button#ping
span.words Sign In
span.loading_spinner
i.fa.fa-circle-o-notch.fa-spin
if errors
if errors.password
p.
Please enter a valid password
和js(koa)文件(快捷方式):
const koa = require('koa');
const body = require('koa-body');
const serve = require('koa-static');
let send = require('koa-send');
const Router = require('koa-router');
const app = koa();
const router = new Router();
var render = require('koa-render-jade')(__dirname);
router.get('/', function *(req, res) {
this.body = yield render('/views/login.jade');
});
function validatePassword(password) {
if (password == "secret") {
return true;
} else return false;
}
app.use(serve(path.join(__dirname, 'public')));
app.use(serve('/views/login.jade'));
var bodyParser = require('koa-body-parser');
app.use(bodyParser());
router.post('/', function *(res, req) {
this.body = this.request.body;
if (validatePassword(this.body.password)) {
console.log("working");
this.response.redirect("www.google.com");
} else {
console.log("not working");
yield render('/views/login', {
title: 'Login',
queryParams: this.body.query,
agency: this.body.agency,
email: this.body.email,
errors: {
"password": true
}
});
}
});
@UPDATE - 我通过重定向进行了管理,只有 "render part" 仍然是个问题。
Jade 文件保持原样。
koa js文件:
var bodyParser = require('koa-body-parser');
app.use(bodyParser());
router.post('/', function *() {
if (validatePassword(this.request.body.password)) {
this.response.redirect("www.google.com");
} else {
this.body = yield render('/views/login', {
title: 'Login',
queryParams: this.request.query,
agency: this.request.agency,
email: this.request.email,
errors: {
"password": true
}
});
}
});
对我来说很好用。希望对大家有所帮助。