亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node.JS, Mongoose和Jade怎樣搭建OAuth2服務器

發布時間:2021-11-17 14:19:24 來源:億速云 閱讀:152 作者:柒染 欄目:web開發

今天就跟大家聊聊有關Node.JS, Mongoose和Jade怎樣搭建OAuth2服務器,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

今天我們來看一個Node.JS的實際應用。這是國外的Paper應用開發者所搭建的OAuth3服務器,使用的主要技術包括:

- Node.JS 的Express框架

- Mongoose工具集,Mongodb的一個流行庫,方便建立模型。

- bcrypt,用于密碼加密

- superagent,用于測試

Papers是一項論文數據庫移動應用,有iOS和Android版本。寫論文的同學們會很需要,關于它的介紹,請看開發者的官方博客。http://blog.papersapp.com/oauth-server-in-node-js/

雖然Papers并不是開源的,但是作者已經把寫好的node-oauth3-server模塊以及Papers的認證過程一起打包放在了GitHub上,我們可以下載研究:

https://github.com/mekentosj/oauth3-example

在代碼中的Models目錄下,我們可以清楚的看到Model的Schema定義。從這里,我們可以明白OAuth3的需要處理的主要數據結構,包括access_token, refresh_token, oauth_client.

var OAuthAccessTokensSchema = new Schema({    accessToken: { type: String, required: true, unique: true },    clientId: String,    userId: { type: String, required: true },    expires: Date  });   var OAuthRefreshTokensSchema = new Schema({    refreshToken: { type: String, required: true, unique: true },    clientId: String,    userId: { type: String, required: true },    expires: Date  });   var OAuthClientsSchema = new Schema({    clientId: String,    clientSecret: String,    redirectUri: String  });   var OAuthUsersSchema = new Schema({    email: { type: String, unique: true, required: true },    hashed_password: { type: String, required: true },    password_reset_token: { type: String, unique: true },    reset_token_expires: Date,    firstname: String,    lastname: String  });

通過運行代碼中的seed.js,我們創建了一個user.

var app = require('./app');  var models = require('./models');   models.User.create({    email: 'alex@example.com',    hashed_password: '$2a$10$aZB36UooZpL.fAgbQVN/j.pfZVVvkHxEnj7vfkVSqwBOBZbB/IAAK' }, function() {    models.OAuthClientsModel.create({      clientId: 'papers3',      clientSecret: '123',      redirectUri: '/oauth/redirect'   }, function() {      process.exit();    });  });

這樣我們就可以開始體驗這個Node.JS的OAuth3服務器了。先讓Mongo運行起來,負責后臺數據庫, 比如"mongod -dbpath ./", 之后運行"npm start".

oliverluan@localhost:~/Documents/EvWork/node_oauth3_example/oauth3-example$ npm start   > oauth3-experiment@0.0.1 start /Users/oliverluan/Documents/EvWork/node_oauth3_example/oauth3-example  > ./node_modules/.bin/nodemon server.js   14 Apr 07:02:43 - [nodemon] v1.0.17  14 Apr 07:02:43 - [nodemon] to restart at any time, enter `rs`  14 Apr 07:02:43 - [nodemon] watching: *.*  14 Apr 07:02:43 - [nodemon] starting `node server.js`  connect.multipart() will be removed in connect 3.0  visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives  connect.limit() will be removed in connect 3.0  Express server listening on port: 3000  POST /oauth/token 200 102ms - 175b  GET /secret 200 2ms - 11b

模擬一個Oauth3的access token請求,運行這份文件(node getToken.js)

var request = require('request');   //client_id  var t_client_id = 'papers3';  //client_secret  var t_client_secret = '123';  //clientCredentials  以client_id:client_secret形式組合并轉換成Base64-encoded  var clientCredentials = (t_client_id + ':'+t_client_secret).toString('base64');  //用戶名  var t_username = 'alex@example.com';  //密碼  var t_password = 'test';   console.log(clientCredentials);   //發送Post請求獲取Token  request.post({      url: 'http://' + clientCredentials + '@localhost:3000/oauth/token',    form: {      grant_type: 'password',      username: t_username,      password: t_password,      client_id: t_client_id,      client_secret: t_client_secret    },  }, function(err, res, body) {    console.log(body);    //獲得Token    var accessToken = JSON.parse(body).access_token;     request.get({      url: 'http://localhost:3000/secret',      headers: { Authorization: 'Bearer ' + accessToken }    }, function(err, res, body) {      console.log(body);     });  });

成功獲得access token.

oliverluan@localhost:~/Documents/EvWork/node_oauth3_example/oauth3-example$ node getToken.js  papers3:123  {    "token_type": "bearer",    "access_token": "620bb362f32857d5174802e06065305874953597",    "expires_in": 3600,    "refresh_token": "569be5f4cc1ea943021b3676eaa2a51825c2c257" }  Secret area

看完上述內容,你們對Node.JS, Mongoose和Jade怎樣搭建OAuth2服務器有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

普安县| 沾化县| 仙游县| 海城市| 临澧县| 福清市| 大冶市| 微山县| 藁城市| 镇远县| 凤山县| 太仓市| 固原市| 郴州市| 诏安县| 六枝特区| 安塞县| 都昌县| 杂多县| 洛阳市| 旌德县| 柞水县| 伽师县| 怀安县| 逊克县| 英山县| 潼南县| 绵阳市| 三门峡市| 资中县| 临澧县| 郧西县| 双辽市| 岢岚县| 定西市| 合山市| 伊春市| 姚安县| 贵港市| 清流县| 赫章县|