nodejs批处理iconfontsvg文件生成svg对象文件供三端统一使用 [crayon-600bd31e […]
分类:nodejs
nodejs实现简单的文件服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
const http = require('http') const fs = require('fs') const mime = require('mime') const url = require('url') const path = require('path') const [hostname, port] = ['127.0.0.1', 3000] const server = http.createServer((req, res)=>{ let pathname = decodeURIComponent(path.join(__dirname,url.parse(req.url).pathname)) if(fs.statSync(pathname).isDirectory()){ res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'}) fs.readdir(pathname,(err,files)=>{ res.write('<ul>') files.forEach(element => { let link = path.join(url.parse(req.url).pathname,element) res.write(`<li><a href = "${link}">${element}</a></li>`) }); res.end('<ul>') }) } else{ fs.readFile(pathname, 'binary', (err, data)=>{ if(err){ res.writeHead(500,{'Content-Type':'text/plain'}) res.end(JSON.stringify(err)) return false } res.writeHead(200,{'Content-Type':`${mime.lookup(pathname)};charset:utf-8`}) res.write(data,'binary') res.end() }) } res.statusCode = 200 }) server.listen(port, hostname,()=>{ console.log(`服务器运行在 http://${hostname}:${port}`) }) |
express集成mysql
npm install mysql --save mysql/connect.js [crayon-600bd […]
nodejs使用jwt设置token值
引入相关模块
1 2 3 |
var expressJwt = require('express-jwt'); var jwt = require('jsonwebtoken'); var SECRET="tangrongyang"; |
登陆验证 [crayon-60 […]
nodejs使用pass.js验证登陆
app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
/** * Module dependencies. */ var express = require('express'); var hash = require('./pass').hash; var bodyParser = require('body-parser'); var session = require('express-session'); var app = module.exports = express(); // config app.set('view engine', 'ejs'); app.set('views', __dirname + '/views'); var routes = require('./routes/index'); app.use('/', routes); // middleware app.use(bodyParser.urlencoded({ extended: false })); app.use(session({ resave: false, // don't save session if unmodified saveUninitialized: false, // don't create session until something stored secret: 'shhhh, very secret' })); // Session-persisted message middleware app.use(function(req, res, next){ var err = req.session.error; var msg = req.session.success; delete req.session.error; delete req.session.success; res.locals.message = ''; if (err) res.locals.message = '<p class="msg error">' + err + '</p>'; if (msg) res.locals.message = '<p class="msg success">' + msg + '</p>'; next(); }); // dummy database var users = { tj: { name: 'tj' } }; // when you create a user, generate a salt // and hash the password ('foobar' is the pass here) hash('foobar', function(err, salt, hash){ if (err) throw err; // store the salt & hash in the "db" users.tj.salt = salt; users.tj.hash = hash; }); // Authenticate using our plain-object database of doom! function authenticate(name, pass, fn) { if (!module.parent) console.log('authenticating %s:%s', name, pass); var user = users[name]; // query the db for the given username if (!user) return fn(new Error('cannot find user')); // apply the same algorithm to the POSTed password, applying // the hash against the pass / salt, if there is a match we // found the user hash(pass, user.salt, function(err, hash){ if (err) return fn(err); if (hash == user.hash) return fn(null, user); fn(new Error('invalid password')); }); } function restrict(req, res, next) { if (req.session.user) { next(); } else { req.session.error = 'Access denied!'; res.redirect('/login'); } } /* istanbul ignore next */ if (!module.parent) { app.listen(3000); console.log('Express started on port 3000'); } |
views/login.ejs […]
在express项目中使用passport
修改app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
var express = require('express'); var passport = require('passport'); var logger = require('morgan'); var Strategy = require('passport-local').Strategy; var db = require('./mongodb'); var routes = require('./routes/index'); var users = require('./routes/users'); passport.use(new Strategy( function(username, password, cb) { db.users.findByUsername(username, function(err, user) { if (err) { return cb(err); } if (!user) { return cb(null, false); } if (user.password != password) { return cb(null, false); } return cb(null, user); }); })); passport.serializeUser(function(user, cb) { cb(null, user._id); }); passport.deserializeUser(function(id, cb) { db.users.findById(id, function (err, user) { if (err) { return cb(err); } cb(null, user); }); }); var app = express(); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); // //引入css、js app.use(express.static('public')); app.use(logger('dev')); app.use(require('cookie-parser')()); app.use(require('body-parser').urlencoded({ extended: true })); app.use(require('express-session')({ secret: 'keyboard cat', resave: false, saveUninitialized: false })); app.use(passport.initialize()); app.use(passport.session()); app.use('/', routes); app.use('/users', users); module.exports = app; |
修改路由文件routes/ […]