4.3 KiB
4.3 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
589a69f5f9fc0f352b528e70 | Implementation of Social Authentication | 2 | 社会认证的实施 |
Description
- 用户单击按钮或链接将它们发送到我们使用特定策略进行身份验证的路由(EG.Github)
- 您的路由呼叫
passport.authenticate('github')
,将其重定向到Github。 - 用户登陆的页面,在Github上,允许他们登录,如果他们还没有。然后它要求他们批准从我们的应用程序访问他们的个人资料。
- 然后,如果用户获得批准,则会使用他们的个人资料将该用户返回到我们的应用。
- 它们现在已经过身份验证,您的应用应检查它是否为返回的配置文件,如果不是,则将其保存在数据库中。
process.env.GITHUB_CLIENT_ID
。对于这个挑战,我们将使用Github策略。 从Github获取您的客户ID和密码是在“开发者设置”下的帐户配置文件设置中完成的,然后是“ OAuth应用程序 ”。点击“注册一个新的应用程序”,为您的应用命名,将网址粘贴到您的故障主页( 不是项目代码的网址 ),最后为回调网址,粘贴到与主页相同的网址,但使用'/ auth / github / callback'已添加。这是用户将被重定向到我们在Github上进行身份验证后处理的地方。将返回的信息保存为.env文件中的“GITHUB_CLIENT_ID”和“GITHUB_CLIENT_SECRET”。在重新混合的项目中,创建2条接受GET请求的路由:/ auth / github和/ auth / github / callback。第一个应该只调用护照来验证'github',第二个应该调用护照来验证'github',失败重定向到'/'然后如果成功重定向到'/ profile'(类似于我们的上一个项目)。 '/ auth / github / callback'应该如何看待的示例与我们在上一个项目中处理正常登录的方式类似: app.route( '/登录') .post(passport.authenticate('local',{failureRedirect:'/'}),(req,res)=> { res.redirect( '/简档'); });当您认为自己已经做对时,请提交您的页面。如果您遇到错误,可以在此处查看项目。
Instructions
Tests
tests:
- text: Route / auth / github正确
testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /("|")\/auth\/github("|")[^]*get.*passport.authenticate.*github/gi, "Route auth/github should only call passport.authenticate with github"); }, xhr => { throw new Error(xhr.statusText); })'
- text: Route / auth / github /回调正确
testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /("|")\/auth\/github\/callback("|")[^]*get.*passport.authenticate.*github.*failureRedirect:( |)("|")\/("|")/gi, "Route auth/github/callback should accept a get request and call passport.authenticate for github with a failure redirect to home"); }, xhr => { throw new Error(xhr.statusText); })'
Challenge Seed
Solution
// solution required