2015-04-23 2 views
0

Я начал изучать nodejs и устанавливать экспресс с их документацией. Теперь в процессе, я хочу создать форму для входа в систему и при нажатии входа в систему я хочу, чтобы он прошел до , чтобы проверить учетные данные для проверки.Простая форма входа с использованием node.js и express

Я не размещаю полный код здесь. Только часть его.

var routes = require('./routes/index'); //default with express 
var users = require('./routes/users'); //default with express 
var login = require('./routes/login'); //created by me 
var check = require('./routes/check'); //created by me. 

Update 2

app.use('/', routes); 
app.use('/users', users); 
app.use('/login', login); 
app.use('/check', check); 

Войти маршрут работает отлично, и я получаю выход. Когда я нажимаю логин, он входит в маршрут

http://localhost:3000/check 

и кивок 404 не найдены.

Принимая во внимание, что если я непосредственно ввожу url в свой браузер, я получаю вывод в браузере.

check.js

router.get('/', function(req, res, next) { 
res.send('respond with a resource'); 
}); 

обновление check.js

var express = require('express'); 
var router = express.Router(); 

/* GET users listing. */ 
router.post('/check', function(req, res, next) { 
    res.send('respond with a resource'); 
}); 

module.exports = router; 

login.jade

extends layout 
    block content 
    div(class="col-md-4 col-lg-4 col-md-offset-4 col-lg-offset-4") 
    h1 User Login 
    form(name="login", action="/check", method="post") 
     div(class="form-group") 
     input(type="text", name="user" class="form-control") 
     div(class="form-group") 
     input(type="password", name="pass" class="form-control") 
     div(class="form-group") 
     input(type="submit", value="login" class="btn btn-warning form-control") 

Я также ищут б для создания приложения node.js, что не так сложно и легко понять для noob.

Обновление 1: Ошибка при нажатии кнопки входа в систему с

Error: Not Found 
    at app.use.res.render.message (/home/alaksandar/Desktop/Untitled Folder/myapp/app.js:38:13) 
    at Layer.handle [as handle_request] (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/layer.js:82:5) 
    at trim_prefix (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:302:13) 
    at /home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:270:7 
    at Function.proto.process_params (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:321:12) 
    at next (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:261:10) 
    at /home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:603:15 
    at next (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:246:14) 
    at Function.proto.handle (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:166:3) 
    at router (/home/alaksandar/Desktop/Untitled Folder/myapp/node_modules/express/lib/router/index.js:35:12) 

ответ

0

РЕДАКТИРОВАТЬ 2

маршрутизатор должен быть применен в качестве промежуточного слоя с помощью app.use():

router.post('/', function(req, res, next) { 
res.send('respond with a resource'); 
}); 

app.use('/check', router); 

then a POST Request on Path "/check" would be handeled by your router. 

если вы этого не сделаете, обеспечите маршрутизацию напрямую через приложение.пост() как этот

app.post('/check', function(req, res, next) { 
res.send('respond with a resource'); 
}); 

EDIT:

действие = "/ проверить" достаточно;)

Но вы по-прежнему не хватает на то, что форма посылает POST в маршрут "/ проверить" и ваш экспресс-маршрутизатор listeing на запрос GET по пути "/"

ORIGINAL:

Я думаю, что у используют атрибут действия вида тегов неправильно: должно быть

action="http://www.yourDomain.com/check" 

может быть, я ошибаюсь, и

action="/check" 

достаточно,

, но и вы прослушивание запроса GET, и форма отправляет POST на отправке.

router.get('/', function(req, res, next) { 
res.send('respond with a resource'); 
}); 

Также маршрут вы listeing на это "/" и schould быть "/ проверить" мой подход был бы:

check.js

router.post('/check', function(req, res, next) { 
res.send('respond with a resource'); 
}); 

Войти. нефрит

extends layout 
block content 
div(class="col-md-4 col-lg-4 col-md-offset-4 col-lg-offset-4") 
h1 User Login 
form(name="login", action="http://www.yourDomain.com/check", method="post") 
    div(class="form-group") 
    input(type="text", name="user" class="form-control") 
    div(class="form-group") 
    input(type="password", name="pass" class="form-control") 
    div(class="form-group") 
    input(type="submit", value="login" class="btn btn-warning form-control") 

Надеется, что это помогает

+0

Вы, безусловно, не должны включать в себя полное доменное имя в форме действие; если он находится в одном домене, тогда '/ check' будет относиться к этому домену. Проблема заключается в GET v. POST. –

+0

Nope. Его работа не меняется на полный домен или с помощью POST. Я тестировал его еще до того, как я разместил его. –

+0

Я отредактировал его еще раз, проблема на мой взгляд заключается в том, что вы списываете запрос GET на «/» в выражении, и форма отправляет POST на «/ check». –

1

Update

В app.js использовать

app.use('/check',check)

И check.js использовать

router.post('/', function(req, res, next) { 
res.send('respond with a resource'); 
}); 

И убедитесь, что вы экспортируете это с использованием module.exports

старый

В ваших check.js файл, который вы должны использовать

router.post('/check', function(req, res, next) { 
res.send('respond with a resource'); 
}); 

Вместо того

router.get('/', function(req, res, next) { 
res.send('respond with a resource'); 
}); 
+0

Пожалуйста, проверьте мое обновление. Я уже сделал это и отправил с удачей. –

+0

Добавлено обновление 2, что совпадает с вашим советом. –

+0

не использовать '/ check' внутри router.post в check.js, использовать только '/' – Anmol

Смежные вопросы