本文最初發表在Okta開發人員博客上。感謝您支持使SitietPoint成為可能的合作夥伴。 今天的互聯網用戶期望個性化的體驗。開發人員必須學會開發提供該個性化體驗的網站,同時將用戶的信息私有。現代Web應用程序還傾向於具有服務器端API和客戶端用戶界面。讓兩端都意識到當前已登錄的用戶可能會很具有挑戰性。在本教程中,我將帶您通過設置饋送React UI的節點API,並構建一個用戶註冊,以使用戶的信息保持私密和個人。
> 在本教程中,我不會使用任何州管理庫,例如Redux或ReduxThunk。在更強大的應用程序中,您可能想這樣做,但是很容易連接redux和reduxthunk,然後添加此處用作thunks的獲取語句。為了簡單起見,並將本文側重於添加用戶管理,我將在componentdidmount函數中添加fetch語句。鑰匙要點
訪問您要應用應用程序並為其創建一個新文件夾的文件夾:
npm i -g create-react-app express-generator>這將在apersample文件夾中創建兩個文件夾,稱為API和客戶端,並在API文件夾中使用nodejs和Express應用程序,在客戶端文件夾中使用基本React應用程序。因此,您的文件夾結構看起來像:
默認情況下,React App和Node應用都將在開發的端口3000上運行,因此您需要使API在其他端口上運行,然後在客戶端應用中代理。
在API文件夾中,打開 /bin /www文件,然後更改端口API將運行到3001。然後,在客戶端應用程序中設置API的代理,以便您仍然可以調用/api/{resource}並將其從端口3000到端口3001。設置下面的名稱:
>最後,不要忘記為每個子文件夾(API和客戶端)運行NPM安裝或紗線安裝以確保依賴關係已安裝。
mkdir MembershipSample cd MembershipSample express api create-react-app client>您現在可以通過在適當的API和客戶端應用程序的適當文件夾中運行NPM啟動或YARN來運行這兩個應用程序。
>
添加OKTA應用程序/** * Get port from environment and store in Express. */ var port = normalizePort(process.env.PORT || '3001'); app.set('port', port);
如果您還沒有這樣做,請在https://developer.okta.com/signup/中創建一個免費的永遠的開發人員帳戶。
>註冊後,單擊頂部菜單中的應用程序。然後單擊“添加應用”按鈕。然後,您將被帶到應用程序創建嚮導。選擇單頁應用按鈕,然後在底部單擊“下一步”。
>
然後單擊底部的“完成”按鈕。
>在底部,您會看到客戶端ID設置(顯然不會模糊您的ID)。將其複製到您的React應用程序中。您還需要OKTA組織URL,您可以在儀表板頁面的左上方找到。它可能看起來像“ https://dev-xxxxxx.oktapreview.com”。
>將身份驗證添加到ReactJS應用程序
npm i -g create-react-app express-generator或,如果您使用的是紗線軟件包管理器:
mkdir MembershipSample cd MembershipSample express api create-react-app client>將文件添加到client/src文件夾,稱為app.config.js。文件的內容為:
然後,設置index.js文件以使用React路由器和Okta的React SDK。當index.js文件完成時,它看起來像這樣:
/** * Get port from environment and store in Express. */ var port = normalizePort(process.env.PORT || '3001'); app.set('port', port);>
>完成後,您將添加React路由器的BrowserRouter組件(將其為“路由器”),以及Okta的React SDK的安全組件。另外,app.config.js文件被導入為“ config”,因此您可以在安全組件要求的屬性中使用配置值。
"name": "client", "proxy": "http://localhost:3001"
>您還將用路由器和安全組件將應用程序組件包圍,並傳遞指定的值。 Onauthrequired方法,只需告訴Okta的React SDK,當有人嘗試訪問安全路線而未登錄時,將它們重定向到登錄頁面。
其他所有內容都來自您以前運行的create-react-app命令。>
>將頁面添加到reactjs應用程序>在將任何路由添加到React應用程序之前,請創建一些組件來處理要添加的路由。
>
這是您目前真正需要的主頁。最重要的是要使主頁組件成為類類型。即使現在它僅包含一個H1標籤,它的意思是一個“頁面”,這意味著它可能包含其他組件,因此必須是一個容器組件。
接下來,在組件中創建一個auth文件夾。這是所有與身份驗證有關的組件都將存在的地方。在該文件夾中,創建一個loginform.js文件。npm install @okta/okta-react react-router-dom --save
>要注意的第一件事是,您將使用Okta React SDK的Aauth高階組件來包裝整個登錄表單。這為稱為AUTH的組件添加了一個道具,使得可以在該高階組件上訪問等函數和重定向功能。
登錄組件的代碼如下:>
npm i -g create-react-app express-generator>這裡要注意的另一件事是導入的Oktaaauth庫。這是用於執行諸如使用您之前創建的OKTA應用程序簽名的基礎庫。您會注意到在構造函數中創建的Oktaaauth對象,該對像傳遞給了BaseUrl的屬性。這是您的app.config.js文件中的發行人的URL。登錄組件應包含在另一個組件中,因此您必須創建一個loginpage.js文件才能包含此組件。您將再次使用withauth高階組件,以訪問iSauthenticationationation的函數。 loginPage.js的內容將是:
>
mkdir MembershipSample cd MembershipSample express api create-react-app client儘管它比登錄表單組件中的內容要少一些,但這裡仍然有一些重要的作品。
>再次,您正在使用withauth高階組件。對於需要使用Okta的身份驗證或授權過程的每個組件,這將是一個反復出現的主題。在這種情況下,它主要用於獲取等法化功能。 checkAuthentication()方法在構造函數和componentDidupdate生命週期方法中執行,以確保在創建組件時檢查它並再次對組件檢查進行檢查。
>> iSauthenticated返回true時,將其設置在組件的狀態中。然後在渲染方法中檢查它,以決定是顯示登錄組件還是重定向到用戶配置文件頁,這是您將下一步創建的組件。
>現在,在身份文件夾中創建ProfilePage.js組件。組件的內容為:
>此處的Aauth組件使您可以訪問Getuser函數。在這裡,它是從componentdidmount中調用的,這是拉出將在渲染方法中使用的數據的常見位置。您可能會看到的唯一奇怪的事情是渲染方法的第一行,該行沒有渲染,直到實際上有一個從GetUser異步調用中返回的用戶。一旦該州有一個用戶,它就會呈現配置文件內容,在這種情況下,該內容只是顯示了當前登錄的用戶名稱。
/** * Get port from environment and store in Express. */ var port = normalizePort(process.env.PORT || '3001'); app.set('port', port);>
接下來,您將添加一個註冊組件。可以像登錄表單一樣完成,其中有一個登錄組件包含在登錄頁組件中。為了演示另一種顯示此目的的方式,您只需創建一個將成為主要容器組件的Incumtrationform組件即可。在身份驗證夾中創建一個具有以下內容的registrationform.js文件:
>npm i -g create-react-app express-generator
此組件看起來很像登錄組件,但它稱為節點API(您將稍後構建)將處理註冊。一旦註冊由節點API完成,該組件將記錄新創建的用戶,並且渲染方法(當它在狀態中看到會話令牌時)將用戶重定向到應用程序的主頁。
>您還可以注意組件狀態上的SessionToken屬性。這是由HandleSubmit()函數設置的,目的是為了處理登錄,如果註冊成功。然後,Render()方法還使用它在登錄完成後進行重定向,並且已收到一個令牌。>
>將路由添加到React App>您需要將導航組件包裝在Withauth高階組件中。這樣,您可以檢查是否有身份驗證的用戶,並在適當的情況下顯示登錄或註銷按鈕。
>現在您擁有可用的組件來處理所有路由,創建與之相處的路由。更新app.js文件,以使最終版本看起來如下:
mkdir MembershipSample cd MembershipSample express api create-react-app client
>這裡有幾個值得注意的事情。 Okta的React SDK的SecureRoute和IndraTcallback組件的導入。隱式驗證組件從身份驗證流中處理回調,以確保React應用程序中有一個端點,以從Okta捕獲返回調用。 Securete組件允許您將任何路線保護並重定向到登錄頁面。
/** * Get port from environment and store in Express. */ var port = normalizePort(process.env.PORT || '3001'); app.set('port', port);。
> React路由器的路由組件完全可以執行您的期望:它採用了用戶導航並設置一個組件來處理該路由的路徑。 SecureRoute組件進行額外的檢查,以確保在允許訪問該路線之前登錄用戶。如果不是,則in index.js中的onauthrequired函數將被調用以迫使用戶進入登錄頁面。
>這是唯一真正奇怪的東西,這是登錄路徑的途徑。它不簡單地設置組件來處理路徑,而是運行渲染方法,該方法呈現登錄頁組件並從配置中設置baseurl。>將API端點添加到節點應用
>您可能還記得節點API正在執行註冊,因此您需要將端點添加到節點應用程序中以處理該調用。為此,您需要添加Okta的節點SDK。從“ API”文件夾運行:
npm i -g create-react-app express-generator然後,您將在API/路由中更改users.js文件。該文件看起來像:
mkdir MembershipSample cd MembershipSample express api create-react-app client>這裡要注意的最大的事情是lib/oktaclient的導入(您將添加片刻),呼叫OktaClient上的CreateSer函數的調用以及Newuser對象的形狀。 Newuser對象的形狀記錄在Okta的API文檔中。
>對於您的節點應用程序以撥打OKTA應用程序,它將需要API令牌。要創建一個,請進入您的Okta開發人員儀表板,懸停在API菜單選項上,然後單擊令牌。
從那裡單擊“創建令牌”。給令牌一個名稱,例如“會員資格”,然後單擊“創建令牌”。
>>將令牌複製到安全的位置以供稍後使用。
>
在節點應用程序的詞根上的app.js文件中,更新文件以將所有調用路由到 /api /
/** * Get port from environment and store in Express. */ var port = normalizePort(process.env.PORT || '3001'); app.set('port', port);如果您的節點應用仍在運行,則需要停止該應用程序(使用CTRL C)並重新運行它(使用NPM啟動)才能生效。
>
>即使網站仍然需要一些嚴肅的風格愛,您現在可以註冊用戶,與新創建的用戶登錄並獲取登錄的用戶配置文件以在個人資料頁面上顯示!"name": "client", "proxy": "http://localhost:3001"
了解更多
如果您想了解有關此文章中使用的技術的更多信息,則可以查看以下文檔:
>一如既往,如果您對文章有疑問,評論或疑慮,可以通過lee.brandt@okta.com給我發送電子郵件,或將您的問題發佈到開發人員論壇上。有關更多文章和教程,請在Twitter @oktadev上關注我們
>在React應用中實現OKTA身份驗證涉及多個步驟。首先,您需要使用NPM或紗線安裝Okta React SDK。然後,您需要在Okta開發人員帳戶中創建OKTA應用程序。創建應用程序後,您將收到一個客戶端ID,您將使用它來配置應用程序中的Okta React SDK。您還需要使用Okta React SDK組件設置登錄,註銷和安全頁面的路由。最後,您可以使用useOktaAuth鉤訪問組件中的身份驗證狀態和方法。
>>如何使用okta? >
使用OKTA保護您的React應用程序涉及使用Okta React SDK將身份驗證和授權功能添加到您的應用程序中。您可以使用安全組件包裝應用程序並為其提供必要的身份驗證上下文。您還可以使用SecureRoute組件來保護某些路線,並確保只有身份驗證的用戶才能訪問它們。此外,您可以使用useOktaAuth鉤訪問組件中的身份驗證狀態和方法。>如何測試我的OKTA身份驗證實現?
>您可以通過導航到Okta開發人員儀表板中的“自定義”部分來自定義OKTA登錄頁面。在這裡,您可以更改登錄頁面的徽標,顏色和文本。您還可以使用Okta登錄窗口小部件,該小部件是一個提供完全可自定義的登錄體驗的JavaScript庫。
okta為各種前端提供SDK框架,包括角和VUE。這些SDK與React SDK的工作原理相似,並允許您在應用程序中添加身份驗證和授權功能。您可以使用NPM或紗線安裝SDK,並使用OKTA應用程序詳細信息進行配置,並在應用程序中使用其組件和掛鉤。
>>我如何對OKTA身份驗證的問題進行故障排除?
我如何了解有關OKTA及其功能的更多信息?
以上是用節點,React和Okta構建用戶註冊的詳細內容。更多資訊請關注PHP中文網其他相關文章!