2016-07-27 48 views
0

我想在mod_auth_openidc库上定制一个。Koa.js验证密码(玉)呈现和重定向

我在使用koa时出现问题。当我用express写同样的东西时,这很容易,因为jade文件看起来像我附在下面的sam,我可以使用res.redner。

现在,当我跑我的代码我只得到JSON输出:

{"username":"[email protected]","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 - 我与重定向管理,只有 “渲染部分” 仍然是一个问题。

回答

0

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

为我工作得很好。希望它能帮助别人。