Advertisement
Guest User

Untitled

a guest
Aug 16th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var express  = require('./node_modules/express')
  2. var crypto  = require('crypto')
  3.  
  4. var app = express.createServer(
  5.     express.bodyParser(),
  6.     express.cookieParser(),
  7.     express.session({ secret: 'some sected words' }),
  8.     'root', __dirname+'/www'
  9. )
  10.  
  11. var users = {
  12.     'elcuore@gmail.com': {name: 'drago', salt: 'salt', pass: hash('helloworld', 'elcuore@gmail.com')}
  13. }
  14.  
  15. app.use(basic_auth)
  16.  
  17. function basic_auth(req, res, next) {
  18.     if(req.session.user) { //разрешаем вход
  19.         next()
  20.         return
  21.     } else if(req.headers.authorization && req.headers.authorization.search('Basic ') === 0) { //пытаемся авторизировать
  22.         var auth = new Buffer(req.headers.authorization.split(' ')[1], 'Base64').toString().split(':')
  23.         if(users[auth[0]] && users[auth[0]].pass == hash(auth[1], auth[0])) {
  24.             req.session.user = users[auth[0]]
  25.             console.log('access allowed for %s', auth[0])
  26.             next()
  27.             return
  28.         }
  29.         console.log('access denied for %s', auth[0])
  30.     }
  31.     res.header('WWW-Authenticate', 'Basic realm="game"')
  32.     res.send('auth required', 401)
  33. }
  34.  
  35. function hash(str, salt) {
  36.     return crypto.createHash('sha256').update(str+salt).digest('hex')
  37. }
  38.  
  39. app.get('/', function(req, res) {
  40.     res.send('welcome '+req.session.user.name)
  41. })
  42. app.listen(3000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement