Koa.js验证密码(jade)渲染和重定向

时间:2016-07-27 10:58:31

标签: node.js redirect pug render koa

我正在尝试在mod_auth_openidc库上自定义一个。

我在koa中渲染时遇到问题。当我在快递中写同样的东西时,这很容易,因为玉文件看起来我附在下面的山姆,我可以使用res.redner。

现在,当我运行我的代码时,我只获得JSON输出:

{"username":"test@gmail.com","password":"asdasd"}

我的问题是,当我执行验证密码时,如果用户输入了错误的密码我想留在当前页面上,请不要更改网址,只添加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 - 我使用重定向进行管理,只有"渲染部分"仍然是个问题。

1 个答案:

答案 0 :(得分:0)

玉文件保持不变。

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
            }
        });
    }
});

对我来说很好。希望它会帮助别人。