Passport.js本地策略如何保护路线

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Passport.js本地策略如何保护路线相关的知识,希望对你有一定的参考价值。

抱歉,它是用coffeescript(不是纯js)编写的。我一直在查看passport.js,并试图将其包含在项目中,这是其中的简化版本,仅包含auth内容。

express = require 'express'
passport = require 'passport'
LocalStrategy = require 'passport-local'
.Strategy
BasicStrategy = require 'passport-http'

app = express()
server = require 'http'
.createServer app
server.listen 3000

app.use express.cookieParser()
app.use express.session
  secret: 'abc'
app.use express.json()
app.use express.urlencoded()
app.set 'views', "#{__dirname}/views"
app.set 'view engine', 'jade'
app.locals.pretty = true
app.use passport.initialize()
app.use passport.session()

passport.use new LocalStrategy (username, password, done) ->
  if username is 'admin' and password is 'password'
    return done null, user =
      username: 'admin'
  else
    return done null, false, message: 'Incorrect username / password'

passport.serializeUser (user, done) ->
  done null, user.username

passport.deserializeUser (username, done) ->
  done null, user =
    username: username

app.get '/login', (req, res) ->
  res.render 'login',
    title: 'Login'

app.post '/login', passport.authenticate 'local',
  successRedirect: '/admin'
  failureRedirect: '/login'

app.get '/admin', (req, res) ->
  res.render 'admin',
    title: 'Admin'

app.get '/devices', (req, res) ->
  res.render 'devices',
    title: 'Devices'

这是非常基本的,因为本地策略仅检查用户名是'admin'和密码是'password',但是我不确定如何保护'/ admin'和'/ devices'路由?我尝试过这种事情:

app.get '/devices', passport.authenticate('local', {
  failureRedirect: '/login'
}, (req, res) ->
  res.render 'devices',
    title: 'Devices'

但是这似乎没有用。。

抱歉,它是用coffeescript(不是纯js)编写的。我一直在查看passport.js,并试图将其包含在项目中,这是其中的简化版本,仅包含auth内容。表达= ...

答案

如果用户在登录后成功通过身份验证,则可以执行以下操作:

另一答案

res.send(401)现在已弃用。

以上是关于Passport.js本地策略如何保护路线的主要内容,如果未能解决你的问题,请参考以下文章

向 passport.js 本地策略添加其他字段

Sails.js + Passport.js 获取当前登录用户

使用 passport.js 将本地策略连接到另一个(Facebook、Twitter、Google 等)

passport.js 中的本地和 Google 策略:序列化用户时的问题

如何同时使用 Bearer 和 oauth2 passport.js 策略?

使用 Passport.js 和 Sails.js 注册后如何重定向到特定位置?