ANGULAR | akveo/nebular 系列 - 6.3. 配置認證策略 | 中文

原文:https://akveo.github.io/nebular/docs/auth/configuring-a-strategy#strategy

認證策略

在 Nebular 中的詞彙 認證策略 Auth Strategy 是一個為一些特定的認證流程(像是 email/password、OAuth2 等流程)依認證邏輯而設計的類別。
它接受使用者的輸入(login/email/password/token 等…),將輸入傳遞給後端 API 並將輸出結果提供給認證 UI 層。
目前,有兩個認證策略可用:

  • NbDummyAuthStrategy - 為了測試目的的簡單策略,當 API 還在開發階段時可以用於模擬後端的回應。
  • NbPasswordAuthStrategy - 最常見的 email/login/password 認證策略。

每一個策略有一個擁有預設值的配置清單可用,但你可以根據自己的需求調整配置。


認證策略配置

一個例子,讓我們為 NbPasswordAuthStrategy 配置 API 端口。這個策略是被預設配置的,如果您需要任何客製化的做法,請參閱 預設配置的設定值
我們假設您已經安裝「認證模組」在您的 *.module.ts 檔案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

@NgModule({
imports: [
// ...

NbAuthModule.forRoot({
strategies: [
NbPasswordAuthStrategy.setup({
name: 'email',
}),
],
forms: {},
}),
],
});

email 這是我們分配給「策略」的別名,以便我們以後可以動態的提到它。這也允許我們在一個應用程式中配置多個策略。


設定 API 配置

現在我們加入一個 API 端口。根據 NbPasswordAuthStrategy documentation,每一個 function (登入/註冊等…)我們有一個 baseEndpoint 設定以及一個 endpoint 設定:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

@NgModule({
imports: [
// ...

NbAuthModule.forRoot({
strategies: [
NbPasswordAuthStrategy.setup({
name: 'email',

baseEndpoint: '',
login: {
// ...
endpoint: '/api/auth/login',
},
register: {
// ...
endpoint: '/api/auth/register',
},
}),
],
forms: {},
}),
],
});

假設我們的 API 位於獨立的伺服器上 http://example.com/app-api/v1 於是修改 baseEndpoint

1
2
3
4
5
{
// ...
baseEndpoint: 'http://example.com/app-api/v1',
// ...
}

並且配置其端口,請考慮到最終端口將包含 baseEndpoint + method.endpoint:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
baseEndpoint: 'http://example.com/app-api/v1',
login: {
endpoint: '/auth/sign-in',
},
register: {
endpoint: '/auth/sign-up',
},
logout: {
endpoint: '/auth/sign-out',
},
requestPass: {
endpoint: '/auth/request-pass',
},
resetPass: {
endpoint: '/auth/reset-pass',
},
}

最後,我們假設與預設策略不同,我們的 API 僅接受 HTTP POST,所我們加上 method 解決這個問題:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
baseEndpoint: 'http://example.com/app-api/v1',
login: {
endpoint: '/auth/sign-in',
method: 'post',
},
register: {
endpoint: '/auth/sign-up',
method: 'post',
},
logout: {
endpoint: '/auth/sign-out',
method: 'post',
},
requestPass: {
endpoint: '/auth/request-pass',
method: 'post',
},
resetPass: {
endpoint: '/auth/reset-pass',
method: 'post',
},
}

注意
不須要在此列出所有的配置。您的設定將相對應地與預設策略的設定合併。

太好了!經過這些簡單的步驟,您針對 API 後端正確地配置身份認證層。


相關文章


ANGULAR | akveo/nebular 系列 - 6.3. 配置認證策略 | 中文
http://example.com/2018/08/02/auth-strategy/
Author
John Doe
Posted on
August 2, 2018
Licensed under