首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

精通 MEAN 使用 OAuth 和 Passport 管理身份验证(3)

精通 MEAN 使用 OAuth 和 Passport 管理身份验证(3)

设置服务器端 auth/meetup 路由下一步是创建服务器端 auth/meetup 路由。回想一下,所有服务器端逻辑都存储在应用程序目录中;客户端逻辑存储在 public 文件夹中。
在文本编辑器中打开 app/routes/users.server.routes.js。找到 Facebook 的代码块,复制/粘贴它,将                facebook 替换为 meetup(如清单 5 所示)。
清单 5. app/routes/users.server.routes.js
1
2
3
4
5
6
7
8
9
10
11
// Setting the facebook oauth routes
app.route('/auth/facebook').get(passport.authenticate('facebook', {
    scope: ['email']
}));
app.route('/auth/facebook/callback').get(users.oauthCallback('facebook'));

// Setting the meetup oauth routes
app.route('/auth/meetup').get(passport.authenticate('meetup', {
    scope: ['email']
}));
app.route('/auth/meetup/callback').get(users.oauthCallback('meetup'));




还记得您在上一节中在注册和登录页面上创建的 auth/meetup 的超链接吗?第一个路由 (auth/meetup)                将在用户单击该链接来向服务器发送一个 HTTP GET 请求时触发。Passport 将尝试使用                passport-meetup 策略来验证用户。登录尝试的结果(成功与否)将异步地发送给第二个                auth/meetup/callback 路由。
如果现在单击注册页面上的 Meetup 链接,您会获得一个 500 Server Error,而不是                404。准确地讲,这不是一项改进,但至少会有所进步。下一步:配置 Meetup 策略。
配置 Meetup 策略可以在著名的 config/strategies 目录中找到所有 Passport 策略。将 facebook.js 复制为                meetup.js,然后在文本编辑器中打开 meetup.js。
就像上一节中一样,您将浏览此文件,将所有 facebook 实例替换为                meetup。但这不是一个简单的查找/替换操作。还需要执行一些细微的配置更改。
首先,将文件顶部的必需的库从 Facebook 策略更改为 Meetup 策略(如清单 6 所示)。
清单 6. config/strategies/meetup.js
1
2
3
4
5
6
7
8
/**
* Module dependencies.
*/
var passport = require('passport'),
    url = require('url'),
    MeetupStrategy = require('passport-meetup').Strategy,
    config = require('../config'),
    users = require('../../app/controllers/users');




接下来,需要自定义传入到新策略中的选项块。这些值在各个策略之间有所不同。清单 7 给出了 Facebook 策略选项,这些选项不适合 Meetup。
清单 7. 不适合 Meetup 的 Facebook                选项
1
2
3
4
5
6
7
8
module.exports = function() {
    // Use facebook strategy
    passport.use(new FacebookStrategy({
            clientID: config.facebook.clientID,
            clientSecret: config.facebook.clientSecret,
            callbackURL: config.facebook.callbackURL,
            passReqToCallback: true
        },




幸运的是,您之前执行 npm install 的 passport-meetup                模块随带了示例代码。在文本编辑器中打开 node_modules/passport-meetup/examples/login/app.js。查找                passport.use 函数调用(如清单 8 所示)。
清单 8. node_modules/passport-meetup/examples/login/app.js
1
2
3
4
5
passport.use(new MeetupStrategy({
    consumerKey: MEETUP_KEY,
    consumerSecret: MEETUP_SECRET,
    callbackURL: "http://127.0.0.1:3000/auth/meetup/callback"
  },




将这段代码复制到 meetup.js,覆盖 Facebook 代码。接下来,将分号右侧的值更改为清单 9 中所示的值。
清单 9. 将有效的 Meetup                选项
1
2
3
4
5
passport.use(new MeetupStrategy({
    consumerKey: config.meetup.consumerKey,
    consumerSecret: config.meetup.consumerSecret,
    callbackURL: config.meetup.callbackURL,
    },

返回列表