typescript - 路由控制器框架中的 passport.authenticate()
问题描述
我是 JavaScript/TypeScript 开发的新手,我目前正在扩展一个具有单点登录登录的快速应用程序。express 应用程序使用路由控制器框架来处理请求,并且应该使用 passport-saml 进行身份验证。我已经设法使用标准快速路由进行身份验证:
export class SsoRoutes {
public router: Router;
constructor() {
this.router = Router();
}
this.router.get('/login-sso', passport.authenticate('saml'));
this.router.post('/login-sso/consume', passport.authenticate('saml', {
failureRedirect: '/',
failureFlash: true,
session: false
}), function (req, res) {
// handle callback
});
}
但我不知道如何passport.authenticate(...)
在路由控制器框架中使用该方法。谁可以给我解释一下这个?
解决方案
我会选择的解决方案是创建您自己的中间件来处理passport.authenticate()
(查看如何在此处进行操作)。然后你可以使用你自己的中间件和@UseBefore()
装饰器。
@Get("/login-sso")
@UseBefore(yourFirstMiddleware)
loginSso() {
// ... something you want to do after passport.authenticate()
}
第二个端点也类似:
@Post("/login-sso/consume")
@UseBefore(yourSecondMiddleware)
loginSso() {
// ... some other action you want to do after
}
对于其他解决方案,请检查您正在使用的框架的文档。
推荐阅读
- google-apps-script - 使用标准 Google Cloud Platform (GCP) 脚本读取 Gmail POST 通知
- ios - APNS 连接失败
- javascript - 如何使用 javascript 字母随机化器在多行中循环?
- java - Java 使用前缀符号计算数学表达式
- java - JAVA正则表达式从文本中获取整个json
- javascript - 无法在本机反应中打印 this.state.arr 中声明的数组?
- java - 与Java NIO非阻塞套接字连接时如何设置超时?
- firebase - Firestore 对集合组数据的分页查询
- php - 如何关闭angularjs中的弹出框
- reactjs - gatsby中的graphql elemMatch查询不返回数据