Sam*_*Sam 15 javascript authentication node.js oauth-2.0 passport.js
我希望创建自己的策略.
我有client_id,client_secret和相关的元数据.我也知道执行的流程.所以我想创建自己的策略并添加我的自定义逻辑进行身份验证.
我查看了护照策略,但我不了解如何实施自己的策略.有人能解释一下吗?
jav*_*ezg 16
你有两个选择:
如果你有一个自定义逻辑用于身份验证,你真的不需要创建自己的策略...你可以使用passport-custom策略,它允许你构建这个逻辑.根据文件:
自定义身份验证策略通过您选择的自定义逻辑对用户进行身份验
除非您想要实际构建一个您想要分发的策略(例如:OpenID的实现或类似的东西),否则我没有看到实施您自己的策略的重点.
但是,实施自己的策略包括实施护照策略抽象类.我建议查看Github页面而不是npm页面,因为它有关于如何启动和运行的更多信息.基本上,遵循自己的策略的步骤是:
最后,您需要将其打包为npm模块,一旦完成所有操作,您就可以在Node.js项目中使用自己的策略.
正如我所说,我认为你需要有充分的理由去实施自己的策略.我试试护照习俗.
我发现它非常令人沮丧,使用护照定制,在打字稿项目中,实际上创建新策略非常容易,您需要做的就是实现或扩展基本护照策略,因为唯一的强制功能是authenticate,这是策略检查的切入点,剩下的就看你的想象了。
import { Request } from 'express';
import passport from 'passport';
export class CustomStrategy extends passport.Strategy {
name?: string;
authenticate(
this: passport.StrategyCreated<this, this & passport.StrategyCreatedStatic>,
_req: Request,
_options?: any,
) {
// this.success({user: Express.User}, info?: object): void;
this.success({ id: 1 }, { info: 'userdata' });
//// *** Other available inherited methods
//// * fail(challenge?: {message?: string, [key: string]: any } | string | number, status?: number): void;
// this.fail('not your day body'); // default statusCode 401
// this.fail('not your day body', 403); // change for statusCode 403
//// * redirect(url: string, status?: number): void;
// this.redirect('https://url');
//// * pass() // ignores check
// this.pass();
//// * error(err: any)
// this.error('error of some kind');
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9249 次 |
| 最近记录: |