【发布时间】:2014-08-13 16:45:44
【问题描述】:
请..我是 Node js 的新手
我尝试这个是为了我的学习目的
我已经创建了 server.js 文件
var http=require('http');
var flash = require('connect-flash');
var express=require('express');
var fs=require('fs');
var mysql=require('mysql');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var session = require('express-session')
var app=express();
var server=http.createServer(app);
var User=[];
server.listen(8000);
var connection=mysql.createConnection({
host:'****',
user:'****',
password:'****'
});
connection.connect(function(Error,Res){
if(!Error)
{
connection.query('USE USERS');
connection.query( "select *from USERS", function(err, rows){
if(err) {
throw err;
}else{
User.push(rows);
}
});
}
});
app.get('/', function(request,response){
fs.readFile('login.html', function(Error,Res){
if(!Error)
{
response.writeHead(200,{'content-type':'text/html'});
response.write(Res);
}
});
});
app.use(session({secret: '<mysecret>',saveUninitialized: true,resave: true}));
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(id, done) {
done(err, user);
});
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
app.post('/login',
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login',
failureFlash: true })
);
我不知道如何在节点 js 中使用护照验证用户名和密码,但无论如何我在上面尝试过
我的 login.html 看起来像
<html>
<head>
<title>login</title>
<script src="assets/js/Angular.min.js"></script>
<style>
</style>
</head>
<body>
<form action="/login" method="post">
<div>
<label>Username:</label>
<input type="text" name="username"/>
</div>
<div>
<label>Password:</label>
<input type="password" name="password"/>
</div>
<div>
<input type="submit" value="Log In"/>
</div>
</form>
</body>
</html>
我的 sql 用户表有类似的数据
username:Admin,
password:Admin
我使用命令提示符运行 server.js 文件,例如 node server.js 运行后我转到浏览器并输入 http://localhost:8000 我得到以下屏幕
然后我输入 username 和 password 是 Admin ,Admin 当我提交我得到Cannot GET /login我认为这意味着用户名密码错误,因为我指定了failureRedirect: '/login'。但我提供了正确的用户名和密码,为什么我得到Cannot GET /login 而不是Cannot GET /。我在哪里可以犯错误???请帮忙
【问题讨论】:
-
我尝试点击图片....我知道这是图片,我仍然尝试点击它。
-
select *from USERS缺少空格:* from,服务器控制台应该打印错误。 -
错误
Cannot GET /login指向不正确的请求。/login路由仅定义为响应POST请求 (app.post('/login', ...)),而是向其发送GET请求。 -
请朋友们。至少在我的 sql 数据库的帮助下,在节点 js 中提供用户名密码验证的简单示例
-
@Xero 我喜欢那些让我哈哈大笑的罕见的题外话,伙计,我点击了 10 次.. Arunkumar,我会像在任何地方一样做其他语言:
SELECT * FROM users WHERE username = ? LIMIT 1然后if (result.username == username && result.password == crypt.XXX(password)) { // success } else { // no success }
标签: javascript jquery html node.js