小编geo*_*per的帖子

Node.js获取文件扩展名

我在node.js中使用express 3创建文件上传功能.

我想抓取图像的文件扩展名.所以我可以重命名该文件,然后将文件扩展名附加到它.

app.post('/upload', function(req, res, next) {
    var is = fs.createReadStream(req.files.upload.path),
        fileExt = '', // I want to get the extension of the image here
        os = fs.createWriteStream('public/images/users/' + req.session.adress + '.' + fileExt);
});
Run Code Online (Sandbox Code Playgroud)

如何在node.js中获取图像的扩展名?

javascript file-type node.js

171
推荐指数
8
解决办法
16万
查看次数

Nodejs/Expressjs app结构

假设我有这个代码来分隔expressjs中的路由:

module.exports = function(express,app,client) {

    app.get('/', function(req,res,next) {
        var query = 'SELECT * FROM users LIMIT 10';
        var user = client.query(query, function (err, results, fields) {
            res.render('index', {
                title: 'test',
                users: results
            });
            client.end();
        });
    });
}
Run Code Online (Sandbox Code Playgroud)

并要求app.js:

require('./controllers/routes.js')(express,app,client);
Run Code Online (Sandbox Code Playgroud)

1)如何以最佳方式将数据库查询分成新文件?

即使我将db逻辑分开,这个文件也会变得非常大.

2)分隔路线的好方法是什么?也许单独的模块?然后要求他们全部进入app.js

javascript node.js express

22
推荐指数
2
解决办法
2万
查看次数

Expressjs安全会话cookie

我似乎找不到在expressjs框架中设置安全cookie的方法.有没有选择在某个地方这样做?

javascript node.js express

13
推荐指数
2
解决办法
1万
查看次数

将Mysql与Nodejs和Express一起使用(node-mysql)

我是节点和表达的新手,我有一个关于使用mysql的问题.我有一个登录到'/ login'的登录表单.我使用node-mysql模块.

 app.get('/site', function(req, res){
    if (req.session.is_logged_in === true) {
        res.render('site/start', {
            title: 'News'
        });
    } else {
        res.redirect('/');
    }
});

app.post('/login', function(req, res){
    client.query('SELECT id, user_name FROM user WHERE email="' + req.body.login + '" AND password="' + Hash.sha1(req.body.password) + '"',
        function (err, results, fields) {
            if (err) {
                throw err;
            }
            if (results[0]) {
                req.session.userInfo = results[0];
                req.session.is_logged_in = true;
                res.render('site/start', {
                    title: 'News'
                });
            }
            else {
                res.redirect('/');
            }
        }
    );
});
Run Code Online (Sandbox Code Playgroud)

这是一个很好的方法吗?我可以继续这样吗?并且sql查询是以某种方式逃脱的,还是我必须自己编写该功能?

最后一个问题:我重写一个网站,我使用了mysql数据库.将它改成mongodb有什么好处吗?

任何帮助,将不胜感激

提前致谢

乔治

mysql node.js express

10
推荐指数
3
解决办法
2万
查看次数

node.js中的Mongodb安全性

比如说MySQL数据库存在已知的安全问题.这如何适用于NoSQL数据库?例如注射,xss等.使用NoSQL数据库时你必须采取哪些安全措施?特别是关于MongoDB(使用node-mongodb-native)和Node.js(使用Express)

如果是这样,是否有任何Node/Express模块​​可以帮助防止这种情况发生?

database security code-injection mongodb node.js

10
推荐指数
1
解决办法
3345
查看次数

Nodejs bcrypt库

我使用nodejs bcrypt库来获得更好的密码保护.

我不确定我究竟该如何使用它,但到目前为止我得到了这个:

//A module containing this login function:

login: function(credentials,req,res) {

    //"credentials" is containing email and password from login form

    var query = 'SELECT password, email FROM users WHERE email = ? LIMIT 1';

    client.query(query,[credentials.email], function(err, results) {

        if (results[0]) {

            //Compare passwords
        if (bcrypt.compareSync(credentials.password, results[0].password)) {

                //Set session data and redirect to restricted area

            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我删除了示例中的所有错误处理,以便更容易阅读代码.

1.这工作,我能够登录和设置会话.但这就是它的全部吗?我错过了什么吗?

2.生成哈希时看起来就像密码前面有盐一样.我不得不在db中保存盐吗?

任何帮助赞赏

javascript mysql password-protection bcrypt node.js

8
推荐指数
1
解决办法
5271
查看次数

Codeigniter读取nodejs中的会话cookie

我正在使用codeigniter创建一个应用程序,并为实时内容实现nodejs.我想检查用户是否使用nodejs登录.使用下面的代码,我可以在nodejs服务器中获取codeigniter会话ID:

var server = require('https').createServer(options, function(request, response){
var cookies=(function(str){
    var result={};
    str.split(/;\s+/).forEach(function(e){
        var parts=e.split(/=/,2);
        result[parts[0]]=parts[1]||'';
    });
    return result;
})(request.headers.cookie),
    sessionCookieName='ci_session',
    sessionId=cookies[sessionCookieName]||'';
    console.log(sessionId);
}).listen(8080);
Run Code Online (Sandbox Code Playgroud)

codeigniter会话存储在数据库中,加密设置为true.并且sess_match_ip = TRUE,sess_match_useragent = TRUE;

现在我的问题是,检查用户是否登录的好方法是什么?我已经安装了node-mysql客户端.我知道CI做的事情如下:

SELECT *
FROM (`ci_sessions`)
WHERE `session_id` =  'blabla'
AND `ip_address` =  '127.0.0.1'
AND `user_agent` =  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.2   
(KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2'
Run Code Online (Sandbox Code Playgroud)

如何解密会话ID并检查我是否从db获得匹配?

提前致谢

乔治

php mysql session codeigniter node.js

7
推荐指数
1
解决办法
2681
查看次数

Socket.io Express 3会话

有没有一种在Express 3.0中使用Socket.io会话的好方法?一种以安全的方式获取客户会话ID的方法?这样我就可以向会员特定的会员发送通知,并从会员到会员进行私聊?

我在Express 3.0中使用MySQL商店

javascript node.js express socket.io

7
推荐指数
2
解决办法
7058
查看次数

Supertest/Jest 检查 header 是否存在

supertest有没有办法使用and检查响应中是否存在某个标头jest

例如expect(res.headers).toContain('token')

node.js supertest jestjs

5
推荐指数
1
解决办法
7565
查看次数

带有 URL 参数变量的简单路由器

我正在尝试使用 ID 的 URL 参数制作一个简单的路由器。如localhost/profile/123能正常工作,但如果我删除preventDefault,这样的链接工作正常,或刷新浏览器,或直接进入该相同的URL,这是行不通的,而浏览器外观的JavaScript文件main.jslocalhost/profile,而不是产地localhost。没有参数的路由工作正常。这里发生了什么?

const router = async path => {

  if(!path) path = location.pathname

  const segment = route.split('/')

  path =  '/' + segment[1]
  const parameter = segment[2]

  const routes = {
    '/' : { handler: home },
    '/about' : { handler: about },
    '/profile' : { handler: profile },
  }

  render(html`
    <main>${await routes[path].handler(parameter ? parameter : '')}</main>
  `, document.body)
}



const main = async () => {

    await …
Run Code Online (Sandbox Code Playgroud)

javascript url url-parameters single-page-application

5
推荐指数
0
解决办法
235
查看次数