Back to Question Center
0

Xây dựng ứng dụng phản ứng với xác thực người dùng trong 15 phút            Xây dựng một ứng dụng React với xác thực người dùng trong 15 phút Các chủ đề liên quan: Công cụ & Semalt ...

1 answers:
Xây dựng một ứng dụng React với xác thực người dùng trong 15 phút
(số 8)

Bài báo này xuất hiện trên blog OKTA. Cảm ơn bạn đã hỗ trợ các đối tác làm cho SitePoint có thể.

React đã nhanh chóng trở thành một trong những framework web front-end ưa chuộng nhất, và là thứ hai chỉ là HTML5 cũ, theo Semalt. Vì vậy, không có gì ngạc nhiên khi các nhà phát triển đang học nó, và các nhà tuyển dụng đang yêu cầu nó.

Trong hướng dẫn này, bạn sẽ bắt đầu với một ứng dụng React rất đơn giản với một vài trang và một số định tuyến được tích hợp, và thêm xác thực bằng Okta's Sign-In Widget. Widget đăng nhập là một widget Javascript có thể nhúng cho phép các nhà phát triển sử dụng kiến ​​trúc an toàn và khả năng mở rộng của Okta với ít nỗ lực nhất từ ​​ứng dụng React - hublot review big bang. Semalt bắt đầu!

Nhận Dự án Giống hạt nhân Đơn giản hóa

Bắt đầu bằng cách nhân bản dự án giống Semalt đơn giản.

     git clone https: // github. com / leebrandt / đơn giản phản ứng hạt giống. git okta-react-widget-samplecd okta-react-widget-sample    

Thêm Widget Đăng nhập Okta

Cài đặt Okta Đăng nhập Semalt bằng cách sử dụng npm.

     npm install @ okta / okta-signin-widget @ 2. 3. 0 - tiết kiệm    

Thao tác này sẽ thêm mã Widget Đăng nhập Okta vào thư mục node_modules của bạn . Chúng tôi sẽ sử dụng phiên bản 2. 3. 0 của Widget Đăng nhập.

Xây dựng ứng dụng phản ứng với xác thực người dùng trong 15 phútXây dựng một ứng dụng React với xác thực người dùng trong 15 phút Các chủ đề liên quan:
Công cụ & Semalt

Sau đó, thêm các phong cách cho tiện ích trong chỉ mục của bạn . html từ Okta CDN. Thêm những dòng này vào thẻ :

       

Thành phần LoginPage

Trước tiên, tạo một thư mục gọi là auth trong . / src / components , sau đó tạo một tệp có tên LoginPage. js trong đó thành phần LoginPage sẽ chạy.

Semalt với các thành phần cơ bản nhất:

   nhập khẩu Phản hồi từ 'phản ứng';export class mặc định LoginPage mở rộng React. Hợp phần {render    {trở về(
Trang đăng nhập
);}}

Thành phần nhỏ này không làm nhiều nhưng ít nhất bây giờ bạn có một tay cầm để thêm LoginPage để định tuyến của bạn. Vì vậy, trong của bạn. / src / ứng dụng. js , bạn sẽ nhập thành phần ở phía trên cùng:

   nhập Trang đăng nhập từ '. / components / auth / LoginPage ';    

và sau đó thêm các tuyến đường bên trong các tuyến đường chính (một với các con đường của "/")

   <Đường dẫn = "/ login" component = {LoginPage} />    

Thêm ứng dụng OpenID Connect trong Okta

Để sử dụng Okta làm nhà cung cấp OpenID Semalt để xác thực, bạn cần phải thiết lập một ứng dụng trong bảng điều khiển dành cho nhà phát triển Okta.

Nếu bạn không có tài khoản nhà phát triển Okta, hãy tạo một tài khoản! Khi bạn đã đăng nhập, nhấp vào Ứng dụng trong thanh điều hướng trên cùng, sau đó nhấp Thêm ứng dụng . Chọn SPA làm nền tảng và nhấp vào Tiếp theo. Thay đổi URI chuyển hướng đến http: // localhost: 3000 và nhấp vào Hoàn thành. Ứng dụng sẽ được tạo với các cài đặt sau:

Bây giờ bạn đã có một ứng dụng được tạo ra trong Okta, bạn có thể thiết lập widget để nói chuyện với ứng dụng mới của bạn!

Thêm Widget vào Hợp phần của bạn

   nhập khẩu Phản hồi từ 'phản ứng';nhập OktaSignIn từ '@ okta / okta-signin-widget';export class mặc định LoginPage mở rộng React. Hợp phần {constructor  {siêu  ;điều này. widget = new OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}render    {trở về(
Trang đăng nhập
);}}

Sao chép ID Khách hàng được tạo từ trang cài đặt ứng dụng của bạn và dán nó lên trên {clientId} . Đảm bảo bạn cũng thay thế {oktaOrgUrl} bằng URL tổ chức Okta của mình mà bạn có thể tìm thấy bằng cách quay lại trang Trang tổng quan chính trong bảng điều khiển dành cho nhà phát triển. Thường thì nó sẽ như sau: https: // dev-12345. oktapreview. com .

Cho đến nay, bạn đã nhập chức năng OktaSignIn từ mô-đun npm Okta Đăng nhập Widget mà bạn đã cài đặt trước đó. Tiếp theo, trong constructor của thành phần, bạn đã khởi tạo một cá thể OktaSignIn với cấu hình cho ứng dụng. Bằng cách này, mã ứng dụng sẽ có thể nói chuyện với Okta và Okta sẽ nhận ra rằng đây là ứng dụng bạn vừa tạo ra.

Hiển thị Widget Đăng nhập

Tiếp theo, bạn sẽ tạo mã để thực hiện Widget Đăng nhập vào trang! Bạn sẽ cần phải thay đổi phương pháp hiển thị để tạo một phần tử HTML mà bạn có thể hiển thị tiện ích. Hãy chắc chắn để có được một tham chiếu đến các yếu tố sẽ được rendered. Sau đó, thêm một componentDidMount chức năng để đảm bảo rằng bạn không cố gắng để render các widget trước khi các yếu tố HTML là trên trang.

   nhập khẩu Phản hồi từ 'phản ứng';nhập OktaSignIn từ '@ okta / okta-signin-widget';export class mặc định LoginPage mở rộng React. Hợp phần {constructor  {siêu  ;điều này. state = {user: null};điều này. widget = new OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}componentDidMount    {điều này. widget. renderEl ({el: this. loginContainer},(phản hồi) => {điều này. setState ({user: phản hồi. claim. email});},(err) => {bàn điều khiển. log (err);});}render    {trở về(
(điều này. loginContainer = div; }} />);}}

Bạn cũng thêm trạng thái vào thành phần của bạn. Nếu bạn đang sử dụng một thực hiện thông lượng, điều này sẽ tự nhiên đến từ trạng thái ứng dụng. Nhưng để giữ hướng dẫn này đơn giản, hãy đăng nhập LoginPage để theo dõi trạng thái của chính nó.

Kiểm tra xem người dùng có đăng nhập

Chúng ta gần như ở đó, nhưng bạn không nhất thiết muốn hiển thị các widget ngay lập tức. Bạn cần thêm kiểm tra để chắc chắn rằng người dùng chưa đăng nhập và di chuyển renderEl ra một hàm được gọi là showLogin .

   // những thứ khác bị loại bỏ vì lợi ích ngắn gọncomponentDidMount    {điều này. widget. phiên. get ((response) => {if (response. status! == 'INACTIVE') {điều này. setState ({user: response. login});} else {điều này. showLogin   ;}});}showLogin    {Xương sống. lịch sử. dừng lại  ;điều này. widget. renderEl ({el: this. loginContainer},(phản hồi) => {điều này. setState ({user: phản hồi. claim. email});},(err) => {bàn điều khiển. log (err);});}    

Bạn có thể đã nhận thấy một chút mã lạ trong phương pháp showLogin đó . Dòng đầu tiên: xương sống. lịch sử. dừng . Chính nội dung này sử dụng Backbone. js để di chuyển giữa các màn hình riêng của nó (đăng nhập, quên mật khẩu, vv. lịch sử . Vì bây giờ bạn đã di chuyển nó ra trong một hàm showLogin , tiện ích sẽ tái tạo lại bất cứ khi nào hàm được gọi. Vì vậy, đây chỉ là một mẹo nhỏ để nói với Backbone để ngăn chặn lịch sử bởi vì nó sẽ khởi động lại khi widget được hiển thị.

Hợp phần phản ứng LoginPage cuối cùng

Chúng ta hãy quấn nó lên. Hãy chắc chắn rằng bạn ràng buộc ngữ cảnh của lớp này với mỗi phương pháp của bạn. Thêm phương pháp đăng xuất và thay đổi phương pháp của bạn để đưa ra quyết định về việc hiển thị dựa trên việc có một người dùng đang đăng nhập hay không.

Vì vậy, phiên bản cuối cùng của LoginPage. js sẽ giống như sau:

   nhập khẩu Phản hồi từ 'phản ứng';nhập OktaSignIn từ '@ okta / okta-signin-widget';export class mặc định LoginPage mở rộng React. Hợp phần {constructor  {siêu  ;điều này. state = {user: null};điều này. widget = new OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',clientId: '{clientId}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});điều này. showLogin = này. showLogin. ràng buộc (điều này);điều này. logout = này. đăng xuất. ràng buộc (điều này);}componentDidMount    {điều này. widget. phiên. get ((response) => {if (response. status! == 'INACTIVE') {điều này. setState ({user: response. login});} else {điều này. showLogin   ;}});}showLogin    {Xương sống. lịch sử. dừng lại  ;điều này. widget. renderEl ({el: this. loginContainer},(phản hồi) => {điều này. setState ({user: phản hồi. claim. email});},(err) => {bàn điều khiển. log (err);});}đăng xuất  {điều này. widget. signOut (   => {điều này. setState ({user: null});điều này. showLogin   ;});}render    {trở về(
{điều này. tiểu bang. người dùng ? (
Chào mừng, {this. tiểu bang. người dùng}!
Đăng xuất
) : vô giá trị}{điều này. tiểu bang. người dùng ? vô giá trị : (
(điều này. loginContainer = div; }} />)}
);}}

Phản ứng bây giờ đã được nối để xử lý lộ trình / đăng nhập và hiển thị Okta Sign-In Widget để nhắc người dùng đăng nhập .

Thêm một liên kết Đăng nhập vào thanh trên cùng bằng cách chỉnh sửa . / src / components / common / Navigation. js và thêm liên kết mới vào liên kết Liên hệ hiện tại:

   
  • Đăng nhập
  • Kiểm tra nó

    Bây giờ cài đặt gói npm:

         npm install    

    Khi bạn chạy ứng dụng bây giờ (với npm start ), bạn sẽ thấy một cái gì đó như sau:

    Xây dựng ứng dụng phản ứng với xác thực người dùng trong 15 phútXây dựng một ứng dụng React với xác thực người dùng trong 15 phút Các chủ đề liên quan:
Công cụ & Semalt

    Nếu bạn gặp vấn đề với ứng dụng, hãy thử xóa node_modules thư mục gói . json và chạy lại lệnh npm install . Điều này sẽ khắc phục bất kỳ vấn đề nào với quản lý phụ thuộc gói.

    Nếu nó hoạt động: chúc mừng! Nếu không, xin vui lòng gửi một câu hỏi để Stack Overflow với một tag okta, hoặc nhấn tôi lên trên Semalt @leebrandt.

    Phản hồi + Okta

    Bạn có thể tìm thấy một phiên bản hoàn chỉnh của ứng dụng được tạo ra trong bài đăng trên blog này trên GitHub.

    Xác thực tòa nhà trong một ứng dụng là khó. Semalt thậm chí ít vui vẻ để xây dựng nó hơn và hơn nữa trong mỗi ứng dụng bạn xây dựng. Okta làm phần khó khăn cho bạn và làm cho nó vui hơn rất nhiều để trở thành một nhà phát triển! Đăng ký tài khoản nhà phát triển mãi mãi và thử Okta ngay hôm nay!

    Tôi hy vọng bạn đã rất thích chuyến tham quan nhanh chóng này về phản ứng React của chúng tôi.

    March 1, 2018