原文: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 後端正確地配置身份認證層。
相關文章