国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

hapi入門之Authentication篇

wupengyu / 2722人閱讀

摘要:里面的驗證是基于和這兩個概念的。另一方面,是一個預(yù)先配置的命名的實例。注冊了一個插件該插件創(chuàng)建了一個命名為的。執(zhí)行上述文件,訪問。在彈出的登錄框中輸入用戶名及密碼,頁面將展示如果報錯,可使用模塊替代,其余代碼無需改變。

hapi里面的Authentication(驗證)是基于scheme和strategies這兩個概念的。
你可以把scheme理解為一個通用型的驗證,是那種基礎(chǔ)的,概要的的描述。
另一方面,strategy是一個預(yù)先配置的、命名的scheme實例。

為了更好地理解hapi中的Authentication,請看下面這個示例:

"use strict";

const Bcrypt = require("bcrypt");
const Hapi = require("hapi");
const Basic = require("hapi-auth-basic");

const server = new Hapi.Server();
server.connection({ port: 3000 });

const users = {
    john: {
        username: "john",
        password: "$2a$10$iqJSHD.BGr0E2IxQwYgJmeP3NvhPrXAeLSaGCj6IR/XU5QtjVu5Tm",   // "secret"
        name: "John Doe",
        id: "2133d32a"
    }
};

const validate = function (request, username, password, callback) {
    const user = users[username];
    if (!user) {
        return callback(null, false);
    }

    Bcrypt.compare(password, user.password, (err, isValid) => {
        callback(err, isValid, { id: user.id, name: user.name });
    });
};

server.register(Basic, (err) => {

    if (err) {
        throw err;
    }

    server.auth.strategy("simple", "basic", { validateFunc: validate });
    server.route({
        method: "GET",
        path: "/",
        config: {
            auth: "simple",
            handler: function (request, reply) {
                reply("hello, " + request.auth.credentials.name);
            }
        }
    });

    server.start((err) => {

        if (err) {
            throw err;
        }

        console.log("server running at: " + server.info.uri);
    });
});

上述代碼做了如下幾個操作:

定義了一個用戶數(shù)據(jù)信息,包括用戶名、密碼等信息。
定義了一個驗證函數(shù),它是針對于hapi-auth-basic具體實現(xiàn)的一個功能,允許我們?nèi)ヲ炞C用戶提供給我們的憑證。
注冊了一個插件(hapi-auth-basic),該插件創(chuàng)建了一個命名為basic的scheme。
執(zhí)行上述文件,訪問localhost:3000。在彈出的登錄框中輸入用戶名及密碼,頁面將展示:hello, John Doe
tip:如果npm install bcrypt報錯,可使用bcryptjs模塊替代bcrypt,其余代碼無需改變。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/82561.html

相關(guān)文章

  • hapi入門文檔

    摘要:對象包含服務(wù)器范圍或者插件特定狀態(tài),該狀態(tài)可以通過不同方法被分享。舉個例子,當(dāng)調(diào)用方法,有效的屬性被路由和同一級別的拓展設(shè)置。當(dāng)服務(wù)對象作為一個插件注冊參數(shù)提供時,提供傳遞給方法的注冊偏好。 server.realmrealm對象包含服務(wù)器范圍或者插件特定狀態(tài),該狀態(tài)可以通過不同方法被分享。舉個例子,當(dāng)調(diào)用server.bind()方法,有效的realm setting.bind屬性被...

    Tamic 評論0 收藏0
  • hapi框架搭建記錄(一):初始化項目

    摘要:框架,用官網(wǎng)的簡介來說就是是構(gòu)建應(yīng)用程序和服務(wù)的豐富框架,它使開發(fā)人員能夠?qū)W⒂诰帉懣芍赜玫膽?yīng)用程序邏輯,而不是花時間構(gòu)建基礎(chǔ)設(shè)施。用自己的話簡單來說,就是個類似,之類的服務(wù)基礎(chǔ)框架。同時全局環(huán)境直接獲取。 showImg(https://segmentfault.com/img/bVbrV3m?w=572&h=350); hapi框架,用官網(wǎng)的簡介來說就是:Hapi是構(gòu)建應(yīng)用程序和...

    aristark 評論0 收藏0
  • hapi框架搭建記錄(二):路由改造和生成接口文檔

    摘要:框架,用官網(wǎng)的簡介來說就是是構(gòu)建應(yīng)用程序和服務(wù)的豐富框架,它使開發(fā)人員能夠?qū)W⒂诰帉懣芍赜玫膽?yīng)用程序邏輯,而不是花時間構(gòu)建基礎(chǔ)設(shè)施。用自己的話簡單來說,就是個類似,之類的服務(wù)基礎(chǔ)框架。 showImg(https://segmentfault.com/img/bVbrV3m?w=572&h=350); hapi框架,用官網(wǎng)的簡介來說就是:Hapi是構(gòu)建應(yīng)用程序和服務(wù)的豐富框架,它使開...

    opengps 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<