рдиреЛрдб.рдЬреЗрдПрд╕ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рд╕рд╛рдЗрдЯ

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдЬреЗрдПрд╕ рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдпрд╛рдиреА рдЗрд╕ рддрд░рд╣, рдЬрд╣рд╛рдВ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рднрд╛рдЧ - рдХреЗрд╡рд▓ рдкрдВрдЬреАрдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдПред рдЪреВрдВрдХрд┐ рдПрдХреНрд╕рдкреНрд░реЗрд╕.рдЬреЗрдПрд╕ рдХрдиреЗрдХреНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рд▓рд┐рдЦреА рдЧрдИ рд▓рдЧрднрдЧ рд╕рднреА рдЪреАрдЬреЗрдВ рдЗрд╕ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдиреЛрдб рдХреНрдпрд╛ рд╣реИред рдЬреЗрдПрд╕ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рдЖрдЗрдП рдпрд╣ рднреА рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рд╕рд╛рдЗрдЯ рд╣реИ рдФрд░ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИрдВред рдРрд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рд╕реНрд░реЛрдд, рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред

рд╕рд┐рджреНрдзрд╛рдВрдд

рд╕рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рдХреЛрдИ рдЪреАрдЬ рд╣реИ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╛рдЗрдЯ рдкрд░ рд░рд╣рдиреЗ рдХреЗ рджреМрд░рд╛рди рд╕рдордп рдХреА рдЕрд╡рдзрд┐ред рд╕рддреНрд░ рддрдм рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рд╛рдЗрдЯ рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ (рдпрд╛ рдЬрдм рд╕рд╛рдЗрдЯ рдЗрд╕реЗ рдмрд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИ)ред рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ:

рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдПрдХ рд╕рддреНрд░ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ "рдбреАрдмреА рдЯреЗрдмрд▓" рдХрд╣рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рд╕рддреНрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреБрдХреАрдЬрд╝ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдореЗрдореЛрд░реА рдореЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ)ред рдпрджрд┐ рдпрд╣ OpenID / OAuth рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдмрд╛рд╣рд░ рд╕реЗ рдЖ рд╕рдХрддрд╛ рд╣реИред

рдХрдиреЗрдХреНрдЯ

connect рдПрдХ рд╕рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рдирд┐рдпрдо рдЬреЛрдбрд╝реЗрдВ:
 app.use(connect.cookieParser()); app.use(connect.session({ secret: 'your secret here'} )); 

рдЖрджреЗрд╢ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рдпрдореЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╣рд▓рд╛ рдирд┐рдпрдо рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреБрдХреАрдЬрд╝ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░рд╛ session рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рд╛рдорд╛рдиреНрдп request рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рддреНрд░ рдбреЗрдЯрд╛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ (рдпрд╣ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛)ред

connect.session рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ:

рдкреНрд░рд╛рдзрд┐рдХрд░рдг

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, connect рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ session рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╣рд╛рдБ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рд╡рд╣ рд╕рд╣реА рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИ), рддреЛ рд╣рдореЗрдВ рд╕рддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
 if ((request.body.login==='Thor')&&(request.body.password==='111')) { request.session.authorized = true; request.session.username = request.body.login; console.log('Thor is here!'); } 

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ username рдкрд░рд┐рд╡рд░реНрддрди рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдХрд┐рдпрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рддрдм рдпрд╣ рдЬрд╛рдБрдЪрдирд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХреГрдд рд╣реИ рдмрджрд╕реВрд░рдд рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
 if (typeof req.session.username == 'undefined') { //  ,      } 

рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧ рдЖрдЙрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдЬреЛрдбрд╝реЗ рдЧрдП рдлрд╝реАрд▓реНрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛:
  delete req.session.authorized; delete req.session.username ; 

рдПрдХ рдкреВрд░реНрдг рд╕рдлрд╛рдИ рдХреЗ рд▓рд┐рдП, рдПрдХ session.destroy () рд╡рд┐рдзрд┐ рд╣реИред рдпрд╣ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рд╕реЗ session рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг

рдЬрдм рднреА рдЖрдкрдХреЛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдкреГрд╖реНрда рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рди request.session.authorized рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рдпрд╣ рдЙрд╕ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ, рдпрд╣ "рд╕реНрддрд░рд┐рдд" connect рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рдпрдо рд╕реЗрдЯ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдФрд░, рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рддреНрд░реБрдЯрд┐ рдкреГрд╖реНрда рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВред рд╡рд┐рдЪрд╛рд░ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╣реИ , рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣реЛрдЧрд╛
 // ,    ; var siteUrls = [ {pattern:'^/login/?$', restricted: false} , {pattern:'^/logout/?$', restricted: true} , {pattern:'^/$', restricted: false} , {pattern:'^/single/\\w+/?$', restricted: true} ]; function authorizeUrls(urls) { function authorize(req, res, next) { var requestedUrl = url.parse(req.url).pathname; for (var ui in urls) { var pattern = urls[ui].pattern; var restricted = urls[ui].restricted; if (requestedUrl.match(pattern)) { if (restricted) { if (req.session.authorized) { //   ,      next(); return; } else{ //   ,      res.writeHead(303, {'Location': '/login'}); res.end(); return; } } else { next(); return; } } } //   ,        console.log('common 404 for ', req.url); res.end('404: there is no ' + req.url + ' here'); } return authorize ; } app.use('/', authorizeUrls(siteUrls)); 


рд╡рд╣ рд╕рдм рд╣реИред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In145970/


All Articles