Trong bài tập trước,
chúng ta đã thấy cách dễ dàng cho chúng ta để cấu hình và sau đó
giàn giáo ra một máy chủ người nhận bằng cách sử dụng khuôn khổ LoopBack.
Chúng tôi thấy rằng khuôn khổ LoopBack này hỗ trợ toàn bộ quang phổ
của các điểm cuối người nhận và
tất cả các hoạt động của các điểm cuối người nhận tự động cho chúng tôi,
khi chúng tôi giàn giáo ra ứng dụng của chúng tôi.
Trong bài tập này, chúng ta sẽ xem xét làm thế nào chúng ta có thể kết nối
máy chủ LoopBack của chúng tôi với một cơ sở dữ liệu back-end,
hoặc MongoDB trong trường hợp này,
và chúng ta cũng sẽ thấy làm thế nào chúng ta có thể thiết lập các điều khiển truy cập khác nhau trên các điểm cuối của người nhận.
Vì vậy, bằng cách sử dụng các điều khiển truy cập,
chúng ta có thể xác định loại hoạt động nào có thể được thực hiện trên các điểm cuối của người nhận,
và ai sẽ được phép thực hiện các hoạt động đó.
Vì vậy, ví dụ, một người dùng chưa xác thực hoặc một khách chỉ có thể
truy cập thông tin hoặc thực hiện một thao tác get trên các điểm cuối của người nhận,
một người dùng xác thực sẽ có thể cũng làm như vậy,
nhưng chỉ có một quản trị viên mới có thể ghi dữ liệu vào máy chủ của tôi.
Vì vậy, bất kỳ hoạt động đặt, đăng và xóa chỉ có thể được thực hiện bởi một quản trị viên.
Trên đường đi, chúng ta cũng sẽ thấy cách chúng ta có thể thiết lập một tài khoản quản trị trong máy chủ LoopBack của chúng tôi,
và sau đó cấu hình nó để
chỉ người dùng quản trị sẽ được phép thực hiện các thao tác này.
Vì vậy, đây là nơi LoopBack cho phép chúng ta xác định một cái gì đó
được gọi là vai trò liên kết với nhiều người dùng khác nhau.
Vì vậy, mỗi người dùng có thể được gán một vai trò.
Ví dụ, bạn có thể nói về một người dùng thông thường,
một quản trị viên, một quản trị viên siêu và như vậy.
Vì vậy, bạn có thể chia nhỏ tập hợp người dùng của bạn thành các nhóm khác nhau,
và sau đó gán các vai trò khác nhau cho họ.
Ngoài ra, chúng ta sẽ xem xét làm thế nào mô hình người dùng tích hợp có thể được tùy chỉnh hơn nữa,
trong ứng dụng LoopBack của chúng tôi,
và làm thế nào chúng tôi có thể xây dựng một mô hình khác trên đầu trang của mô hình người
dùng, và sau đó sử dụng mô hình người dùng làm lớp cơ sở
và phát triển một mô hình cấp cao hơn được gọi là Mô hình khách hàng
, cho phép chúng tôi lưu trữ thêm thông tin cho mỗi
khách hàng sẽ đăng nhập vào trang web của chúng tôi.
Vì vậy, chúng ta hãy khám phá một số tính năng của LoopBack trong bài tập này.
Để bắt đầu bài tập này,
điều đầu tiên mà tôi muốn bạn làm,
là khởi động máy chủ MongoDB của bạn.
Vì vậy, ở đây tôi đang ở trong một tab thiết bị đầu cuối trong thư mục MongoDB của tôi,
nơi tôi cấu hình máy chủ MongoDB của tôi trước
đó, được sử dụng bởi máy chủ Express Plus MongoDB của tôi trong các bài tập trước đó.
Vì vậy, hãy để tôi khởi động máy chủ MongoDB bằng cách gõ
MonGod trừ dữ liệu phần D-B
trong thư mục này và sau đó khởi động máy chủ MongoDB của tôi.
Bây giờ, tôi sẽ kết nối máy chủ LoopBack của tôi với máy chủ MongoDB của tôi.
Vì vậy, đi vào thư mục máy chủ LoopBack của
tôi ở đây, tôi phải nhắc loại nguồn dữ liệu L-B.
Điều này sẽ cho phép chúng tôi cấu hình nguồn dữ liệu cho máy chủ LoopBack của chúng tôi.
LoopBack chính nó có thể đồng thời kết nối với nhiều nguồn dữ liệu nếu bạn chọn,
và nó hỗ trợ các loại khác nhau.
Nó hỗ trợ cơ sở dữ liệu My Cycle, nó hỗ trợ MongoDB,
nó hỗ trợ Cloudant cũng là một cơ sở dữ liệu tài liệu khác,
nó hỗ trợ Oracle, và nhiều loại cơ sở dữ liệu khác.
Vì vậy, bạn có thể dễ dàng cấu hình điều đó.
Trong ví dụ này, tôi sẽ cấu hình máy chủ LoopBack của
tôi để nói chuyện với MongoDB của tôi trong back-end.
Vì vậy, tại dấu nhắc,
nếu chúng ta gõ nguồn dữ liệu L-B,
nó sẽ nhắc chúng ta thông tin.
Vì vậy, điều đầu tiên nó sẽ yêu cầu chúng tôi là cho tên nguồn dữ liệu,
và sau đó tôi sẽ cấu hình tên nguồn dữ liệu này như MongoDB,
và sau đó nó sẽ nhắc tôi chọn các kết nối.
LoopBack sử dụng các kết nối để kết nối với các cơ sở dữ liệu khác nhau đằng sau hậu trường.
Vì vậy, như bạn có thể thấy, trong bộ nhớ DB đó là một trong những mà
họ chỉ sử dụng trong bài tập trước đó,
nhưng tất nhiên trong bộ nhớ DB có nghĩa là một khi bạn tắt máy chủ của bạn,
tất cả các giá trị sẽ được biến mất,
và vì vậy đó không phải là một lưu trữ dữ liệu liên tục.
Vì vậy, ở đây bạn thấy các loại cơ sở dữ liệu khác nhau mà StrongLoop hỗ trợ ở đây.
Vì vậy, bạn có thể xem danh sách dài của các cơ sở dữ liệu khác nhau được hỗ trợ.
Vì vậy, bạn có thể thấy rằng nó hỗ trợ Cassandra, Redis,
chúng tôi đã đề cập ngắn gọn đến những khi chúng tôi nói về cơ sở dữ liệu NoSQL, MongoDB,
SQL của tôi, PostGres, Oracle,
và thậm chí trực tiếp đến các máy chủ API Rest khác để máy chủ SOAP,
Coachbase và vân vân.
Vì vậy, bạn thấy rằng nó cung cấp cho chúng tôi
một danh sách dài các loại nguồn dữ liệu từ đó,
máy chủ LoopBack của chúng tôi có thể đọc thông tin.
Trong trường hợp của tôi, tôi sẽ sử dụng máy chủ MongoDB vì vậy
tôi sẽ thiết lập đầu nối MongoDB.
Vì vậy, khi tôi làm điều đó,
LoopBack sẽ tự động cài đặt kết nối MongoDB cho chúng tôi,
và khi nó yêu cầu URL chuỗi kết nối,
chúng tôi sẽ chỉ để lại điều này là trống rỗng bởi vì chúng tôi sẽ cho
phép nó sử dụng cách cấu hình chuẩn.
Khi nó yêu cầu máy chủ chúng tôi sẽ nói
localhost bởi vì chúng tôi đang chạy MongoDB của chúng tôi trên cùng một máy tính.
Nếu không, bạn sẽ chỉ
định tên máy chủ của máy tính mà bạn đang chạy MongoDB.
Sau đó, một trong những tiếp theo là số cổng và chúng tôi đang
sử dụng số cổng MongoDB tiêu chuẩn của chúng tôi 27017,
và nó cũng sẽ yêu cầu tên người dùng và mật khẩu nếu cần thiết,
và ngay bây giờ MongoDB của tôi đang chạy mà không cần phải
làm bất kỳ xác thực vì vậy tôi để lại tên người dùng và mật khẩu trống,
và tên cơ sở dữ liệu.
Tên cơ sở dữ liệu trên máy chủ MongoDB đang chạy đằng sau hậu trường,
tên cơ sở dữ liệu có sự nhầm lẫn.
Nếu bạn nhớ lại đó là tên cơ sở dữ liệu mà họ đã thiết lập trên máy chủ MongoDB của chúng tôi.
Và sau đó nó sẽ hỏi chúng ta liệu nó có nên cài đặt kết nối LoopBack,
và tôi sẽ nói có,
và thực sự sẽ đi trước và cài đặt mô-đun NPM mà truy cập vào
kết nối LoopBack vào cơ sở dữ liệu MongoDB.
Và một khi điều đó được thực hiện,
kết nối Loopback của tôi được cài đặt ở đây để bạn có thể thấy rằng đây là phiên bản 1.18.1
và máy chủ LoopBack của tôi đã sẵn sàng để nói chuyện với MongoDB của tôi.
Bây giờ trước khi tôi tiến hành về
phía trước, trong bài tập trước tôi không thực sự cấu hình một số mô hình
và sau đó tôi chỉ định chúng được lưu trữ trong DB,
tôi sẽ cần phải đi và cập nhật chúng để lưu trữ dữ liệu của họ trong MongoDB của tôi.
Vì vậy, chúng ta hãy đi và nhanh chóng đặt lại mã của chúng tôi cho máy chủ LoopBack.
Điều này cũng cung cấp cho chúng tôi một cơ hội để xem
những gì máy chủ Loopback của tôi đã cấu hình trong thư mục này.
Mở thư mục LoopBack trong trình soạn thảo của chúng tôi,
bạn có thể thấy rằng Loopback đã
giàn giáo ra một loạt các tập tin vào thư mục này.
Các package.json tất nhiên chứa
tất cả các mô-đun NPM liên quan đã được cấu hình ra ở đây,
và ở đây bạn có thể thấy rằng LoopBack chính nó đã cấu hình ra mô-đun NPM LoopBack,
mô-đun khởi động LoopBack và
đặc biệt cho phép tôi thu hút sự chú ý của bạn đến LoopBack MongoDB kết nối,
rằng chúng tôi vừa cài đặt một thời gian ngắn trước đây, và nhiều người khác.
Đặc biệt cấu hình cho máy chủ Loopback được
lưu trữ chủ yếu trong các tập tin Json ở đây,
với javascriptcore bổ sung bất cứ khi nào cần thiết.
Chúng tôi sẽ tìm kiếm tùy biến mã javascript một chút sau đó.
Hãy để tôi thu hút sự chú ý của bạn vào thư mục này được gọi là phổ biến.
Trong thư mục chung này,
bạn sẽ thấy tất cả các mô hình mà chúng tôi đã cấu hình ra trước đó.
Vì vậy, bạn sẽ thấy rằng chúng tôi có các tập tin Dishes.json.
Vì vậy, khi bạn mở tập tin dishes.json, bạn thấy cách LoopBack
lưu trữ tất cả các thông tin về mô hình món ăn mà bạn vừa tạo ra,
vì vậy nó có tên, cơ sở
và một số giá trị khác ở đây mà nó yêu cầu.
Và sau đó nhìn vào các thuộc tính và làm thế nào tất cả các thuộc tính được lưu trữ ở đây.
Vì vậy, bạn thấy một số điều rất dễ dàng để bạn
nhận ra chúng đang ở trong tập tin dishes.json.
Tương tự như vậy, leaders.json và promotions.json.
Các tập tin dishes.js là lớn,
chúng tôi có thể thêm vào một số mã tùy chỉnh bổ sung cho các món ăn,
nhưng ngay bây giờ chúng tôi sẽ không làm điều đó,
và vì vậy chúng tôi sẽ chỉ để nó như là.
Vì vậy, đây là nơi bạn có thể thêm vào một số mã bổ sung mà có thể
cần phải được thực hiện khi bạn truy cập vào các món ăn gạch chéo điểm kết thúc.
Nhưng ngay bây giờ chúng ta sẽ để nó trống cho thời điểm này.
Bây giờ chúng ta cũng hãy nhìn vào thư mục máy chủ ở đây.
Và thư mục máy chủ,
đặc biệt cho phép tôi thu hút sự chú ý của bạn đến tập tin datasources.json ở đây.
Trong file sources.json dữ liệu,
tất cả các nguồn dữ liệu khác nhau sẽ được cấu hình ở đây.
Vì vậy, ngay bây giờ, chúng tôi chỉ có DB đó là
cơ sở dữ liệu trong bộ nhớ DB mà LoopBack theo mặc định cấu hình,
và sau đó MongoDB mà chúng tôi chỉ cần cấu hình,
chỉ hấp thụ các thông tin mà đầu vào
đã được lưu trữ vào nguồn dữ liệu đó, tập tin json.
Vì vậy, bạn sẽ thấy rằng LoopBack chính nó hoạt động bằng cách cấu hình tất cả
các tập tin mà LoopBack framework chính nó sử dụng khi nó
khởi động máy chủ API phần còn lại dựa trên LoopBack.
Hãy đi vào tập tin config.json mô hình ở đây.
Các tập tin config.json mô hình
lưu trữ rất nhiều thông tin ở đây rất hữu ích cho chúng tôi,
nhưng ở đây, chúng ta hãy đi vào và sửa đổi một vài điều.
Vì vậy, vào này, chúng ta sẽ thấy rằng có một lần nữa cho các món ăn,
chương trình khuyến mãi và các nhà lãnh đạo, nguồn dữ liệu đã được cấu hình như DB.
Vì vậy, chúng tôi sẽ sửa đổi điều đó để MongoDB ở đây.
Không chỉ cho điều này,
họ cũng sẽ thay đổi điều đó cho các chương trình khuyến mãi, và cả các nhà lãnh đạo
, có nghĩa là, tất cả ba sẽ lấy được dữ liệu của họ từ MongoDB.
Ngoài ra, đối với vai trò được định nghĩa ở đây.
Chúng tôi cũng sẽ lưu trữ trong MongoDB.
Chúng tôi sẽ sớm thấy cách chúng tôi sẽ sử dụng Vai trò,
và cũng RoleMapping ở đây.
Chúng ta sẽ hiểu lý do của hai người này trong một thời gian ngắn.
Và sau đó, ACL, Danh sách điều khiển truy cập,
chúng cũng sẽ được lưu trữ trong MongoDB.
Và sau đó, người dùng, cũng,
chúng tôi sẽ lưu trữ nó trong MongoDB,
và sau đó họ sẽ để nó ở đó.
Vì vậy, đây là những sửa đổi mà bạn nên làm cho
các tập tin model-config.json và sau đó lưu các thay đổi.
Như tôi đã đề cập trước đó, Loopback theo mặc định,
hỗ trợ mô hình này được gọi là, người dùng,
được sử dụng để hỗ trợ xác thực người dùng.
Bản thân mô hình người dùng chỉ lưu trữ ba thuộc tính khác nhau.
Tên người dùng, địa chỉ email
và thông tin liên quan đến mật khẩu.
Bây giờ, nếu họ muốn có
một cách phức tạp hơn để lưu trữ thêm thông tin về người dùng.
Sau đó, họ có thể phân lớp mô hình cơ sở người dùng này,
và sau đó sử dụng nó.
Vì vậy, trong bước tiếp theo này,
tôi sẽ tạo ra một mô hình khác được gọi là mô hình khách hàng,
mà sẽ sử dụng người dùng làm mô hình cơ sở cho hoạt động của nó.
Và bản thân mô hình khách hàng sẽ lưu trữ thêm thông tin về người dùng.
Vì vậy, trong mô hình khách hàng,
tôi sẽ lưu trữ những thứ như tên,
họ, và hình ảnh cho người dùng và vân vân.
Vì vậy, khách hàng sẽ hành động chính xác giống như mô hình người dùng
, đã đi kèm với tập hợp các phương pháp riêng của mình.
Và do đó, mô hình người dùng được sử dụng để xác thực người dùng,
vì vậy bạn có thể nhập tên người dùng và mật khẩu,
và đăng nhập và đăng xuất.
Vì vậy, khi chúng tôi tạo ra mô hình khách hàng này dựa trên lớp cơ sở của mô hình người dùng, mô
hình khách hàng cũng sẽ hỗ trợ việc đăng nhập và đăng xuất các
hoạt động bằng cách sử dụng mô hình khách hàng này.
Vì vậy, chúng ta có thể đăng nhập vào người dùng và đăng xuất người dùng và như vậy.
Vì vậy, xác thực người dùng tự động đến cho quyền.
Vì vậy, để tạo mô hình khách hàng, tại dấu nhắc,
gõ mô hình lb và cho tên mô hình,
chúng tôi sẽ nhập Customer.
Và DataSource, tôi sẽ chọn nó như MongoDB.
Và sau đó khi nó yêu cầu chọn lớp cơ sở
của mô hình, thay vì sử dụng PersistedModel,
chúng ta sẽ di chuyển xuống,
và sau đó chọn User làm lớp cơ sở.
Vì vậy, theo cách đó, nó sẽ lấy được tất cả các thuộc tính
của họ của lớp người dùng cơ sở đã được xây dựng vào Loopback.
Và sau đó chúng tôi sẽ phơi bày điều này với REST API,
và tùy chỉnh số nhiều MT.
Và sau đó điều này sẽ nằm trong thư mục chung.
Và cho điều này, ba thuộc tính mà chúng tôi sẽ thêm là,
tên đầu tiên, mà chúng ta sẽ có các loại chuỗi.
Và điều này không bắt buộc hoặc không có giá trị mặc định.
Và sau đó, họ một lần nữa là chuỗi loại,
không bắt buộc, và không có giá trị mặc định.
Và sau đó hình ảnh của chuỗi loại,
không bắt buộc và không có giá trị mặc định.
Vì vậy, bạn thấy rằng lớp khách hàng chính nó
mang các thuộc tính bổ sung ngoài lớp người dùng.
lớp người dùng đã hỗ trợ tên người dùng,
email và thông tin liên quan đến mật khẩu trong đó.
Vì vậy, lớp khách hàng,
vì lớp phụ là lớp cơ sở,
chúng tôi sẽ nhận được tên người dùng và email tự động từ lớp người dùng.
Và bây giờ, khi bạn đi đến tập tin model-config.jason,
bạn sẽ thấy rằng mô hình Customer đã được thêm vào trong đó.
Và sau đó trong các mô hình phổ biến,
bây giờ bạn sẽ thấy tập tin customer.json được thêm vào đó
với ba thuộc tính bổ sung mà chúng tôi đã thêm vào mô hình khách hàng.
Nhưng lưu ý, rằng nó chỉ định cơ sở như là lớp người dùng cho mô hình khách hàng ở đây.
Vì vậy, đó là cách Loopback cho phép bạn lấy
một lớp cơ sở mô hình và sau đó phân lớp đó vào lớp model.
Vì vậy, bạn sẽ thấy làm thế nào Loopback cho phép chúng tôi tự động hỗ trợ xác thực người
dùng bằng cách sử dụng lớp người dùng và sau đó cho phép chúng tôi thậm chí xác định lớp con bổ sung của
nó, mà sẽ lưu trữ thêm thông tin liên quan đến lớp cơ sở người dùng.
Tiếp theo, chúng tôi sẽ thiết lập Access Control cho
các mô hình khác nhau mà chúng tôi đã thiết lập trong máy chủ Loopback của chúng tôi.
Vì vậy, để thiết lập Access Control,
hoặc Danh sách điều khiển truy cập trong Lookback.
Loopback sử dụng các danh sách điều khiển truy cập như một cách để xác định loại
hoạt động nào có thể được thực hiện trên
các điểm cuối REST API khác nhau tương ứng với các mô hình khác nhau.
Vì vậy, để làm điều đó, chúng ta sẽ gõ tại dấu nhắc lb acl,
ACL là viết tắt của Access Control Lists.
Và sau đó, khi điều này hết, chúng tôi sẽ nói,
mô hình mà chúng tôi muốn Danh sách điều khiển truy cập này được áp dụng cho.
Và sau đó chúng ta sẽ nói, tất cả các mô hình hiện có.
Và chúng ta sẽ nói, Tất cả các số liệu và tài sản.
Và chúng tôi sẽ nói,
Tất cả các loại hoạt động.
Và sau đó, chúng ta sẽ nói, Tất cả người dùng.
Và sau đó chúng ta sẽ nói, Rõ ràng từ chối truy cập.
Vì vậy, trước tiên chúng tôi đóng tất cả các mô hình cho tất cả mọi thứ,
sau đó chúng tôi sẽ từ từ mở ra,
bất kỳ hoạt động nào có thể được thực hiện bởi những người dùng khác nhau.
Vì vậy, bước đầu tiên, chúng tôi đã đóng cửa
tất cả các loại hoạt động trên tất cả các mô hình mà chúng tôi hiện có.
Sau đó, chúng tôi sẽ từ từ bắt đầu mở từng và mọi hoạt động, từng bước.
Bây giờ, bước tiếp theo,
những gì chúng tôi sẽ làm là thiết lập lại Danh sách Kiểm soát Truy cập tiếp theo.
Trong Danh sách Kiểm soát Truy cập thứ hai, chúng ta sẽ nói,
cho tất cả các mô hình hiện có và chúng ta sẽ nói,
Tất cả các chỉ số và thuộc tính.
Và sau đó, chúng tôi sẽ nói, chỉ đọc truy cập. Có
nghĩa là, khi người dùng có thể thực hiện các thao tác GET trên các cổng kết thúc này.
Và các hoạt động GET này có thể được thực hiện bởi tất cả người dùng.
Vì vậy, người dùng có thể truy xuất thông tin.
Và chúng tôi sẽ cấp quyền truy cập một cách rõ ràng cho điều này.
Vì vậy, có nghĩa là các thao tác GET được cho phép trên nút điểm cuối REST API.
Đầu tiên, chúng tôi đóng tất cả mọi thứ,
sau đó chúng tôi chỉ mở các hoạt động GET cho người dùng.
Bây giờ, cuối cùng, họ sẽ đi đến từng mô hình,
và sau đó đóng cửa và cho phép các hoạt động nhất định chỉ
được thực hiện bởi một số loại người dùng nhất định.
Vì vậy, để làm điều đó,
ACL tiếp theo mà chúng tôi sẽ thiết lập là cho một mô hình cụ thể.
Vì vậy, chúng tôi sẽ thiết lập cái này cho các món ăn.
Và chúng ta sẽ nói, Một phương pháp duy nhất.
Và sau đó tên phương pháp là, tạo ra.
Vì vậy, có nghĩa là tạo ra những điều này sẽ chỉ được cho phép bởi.
Vì vậy, một lần nữa, khi nó nói chọn vai trò,
sau đó cho vai trò, chúng ta sẽ nói, khác.
Và sau đó tên vai trò sẽ là quản trị viên.
Vì vậy, những gì chúng tôi đang làm bằng thao tác này là,
chúng tôi đang nói rằng chỉ có một người quản trị mới có thể tạo ra các món ăn mới hoặc cập nhật các món ăn hiện có.
Vì vậy, đây là một chút gần, các hoạt động còn lại.
Vì vậy, chúng ta hãy làm điều tương tự cho các nhà lãnh đạo.
Và Một phương pháp duy nhất và sau đó,
tạo ra và chúng tôi sẽ nói,
chỉ có quản trị viên có thể làm điều này.
Và sau đó cuối cùng, cũng cho chương trình khuyến mãi.
Đối với các chương trình khuyến mãi.
Phương pháp duy nhất, phương pháp tạo sẽ
chỉ được phép bởi người dùng có vai trò được chỉ định là người quản trị.
Chúng ta sẽ thấy cách chúng ta sẽ tạo người dùng với một vai trò cụ thể trong bước tiếp theo.
Cấp quyền truy cập một cách rõ ràng.
Bây giờ chú ý rằng tôi đã không đóng cửa khách hàng để tạo ra các hoạt động.
Nếu tôi đóng cửa khách hàng,
không ai sẽ có thể đăng ký vào hệ thống.
Vì vậy, đó là lý do tại sao tôi sẽ để nó mở ra.
Bởi vì, khách hàng sẽ có thể đăng ký vào hệ thống.
Vì vậy, bạn có thể đăng ký tài khoản mới trên hệ thống.
Tài khoản người dùng trên hệ thống.
Vì vậy, điều đó sẽ được mở cho mọi người để làm.
Vì vậy, để cho phép điều đó cho các khách hàng, chúng tôi sẽ nói, khách hàng,
Một phương pháp duy nhất, tạo ra tất cả người dùng.
Vì vậy, khách hàng có thể được tạo bởi tất cả người dùng vì điều đó sẽ
cho phép mọi người đăng nhập vào tài khoản của họ.
Cuối cùng, chúng ta sẽ thấy làm thế nào chúng ta có thể cấu hình máy chủ của chúng tôi để khởi động
với một người dùng quản trị duy nhất được cấu hình tự động vào máy chủ Loopback của chúng tôi.
Vì vậy, để làm điều đó,
trong máy chủ Loopback của chúng tôi,
trong thư mục máy chủ chúng tôi có thư mục con khởi động này ở đây.
Bất kể mã mà chúng tôi đặt trong thư mục con khởi động,
sẽ được thực hiện khi khởi động máy chủ LoopBack của chúng tôi.
Vì vậy, ở đây, bạn sẽ thấy rằng chúng tôi đã có authentication.js này,
mà đã được thiết lập,
một Loopback mà sẽ thiết lập xác thực người dùng cho chúng tôi.
Và sau đó chúng tôi có root.js mà sẽ thiết lập
một số thông tin bổ sung cho máy chủ RAM Loopback của chúng tôi.
Và chúng ta có thể thêm vào các tệp bổ sung ở đây.
Vì vậy, tôi sẽ đi vào đó vào thư mục khởi động,
và sau đó thêm vào tập tin này được gọi là, script.js.
Và trong script.js này,
tôi sẽ thiết lập mã để tạo ra một người dùng quản trị theo mặc định.
Vì vậy, trong script.js,
sẽ không có gì ngoài một mô-đun NPM dựa trên tập tin, vì vậy,
chúng tôi sẽ bắt đầu bằng cách nói,
module.exports = function (ứng dụng).
Các ứng dụng là ứng dụng Loopback,
mà sẽ được cung cấp như một tham số cho chức năng này cho chúng tôi.
Và như vậy, chúng ta có thể sử dụng nó trong mã của chúng tôi ở đây.
Vì vậy, ở đây, trước tiên chúng tôi sẽ thiết lập một người dùng quản trị.
Vì vậy, để làm điều đó, chúng ta sẽ nói,
var khách hàng = app.models.customer.
Vì vậy, điều này cho phép chúng ta truy cập vào mô hình khách hàng.
Sau đó, chúng tôi sẽ nói, khách hàng.Findone.
Vì vậy, trước tiên chúng ta sẽ kiểm tra xem liệu một người dùng có tên người
dùng là quản trị viên đã được cấu hình trong hệ thống hay không.
Nếu không, sau đó tôi sẽ tạo một người dùng quản trị.
Và điều này cung cấp cho tôi một chức năng gọi lại với hai tham số, err và người dùng.
Và bên trong này- Vì vậy, trước tiên chúng tôi sẽ cố gắng để
xem nếu một người dùng với quản trị viên tên của họ đã tồn tại.
Nếu người dùng không tồn tại,
thì chúng ta sẽ tạo người dùng.
Vì vậy, để tạo người dùng,
chúng tôi sẽ nói ở đây, nếu không phải là người dùng.
Vì vậy, nếu người dùng không phải là null hoặc nếu người dùng nói null,
thì điều đó có nghĩa là không có người dùng quản trị vì vậy tôi cần phải tạo một người dùng quản trị ở đây.
Vì vậy, trong trường hợp này, chúng ta sẽ nói, customer.create.
Và tạo này sẽ có một mảng các đối tượng nếu bạn muốn.
Và mảng đối tượng này sẽ cho phép chúng tôi xác định tài khoản người dùng mà chúng tôi muốn tạo.
Vì vậy, tài khoản người dùng đầu tiên mà tôi muốn tạo hoặc
tài khoản người dùng duy nhất mà tôi muốn tạo là 'Quản trị viên'.
Vì vậy, đây sẽ là quản trị viên mặc định cho
máy chủ loopback của tôi và sau đó tôi có thể cấu hình email.
Vì vậy, nhớ lại rằng mô hình người dùng hỗ trợ các thuộc tính này,
confusion.net và sau đó mật khẩu
tôi sẽ cấu hình như mật khẩu.
Bạn cũng có thể cung cấp cùng với điều này,
tên và họ,
nếu bạn muốn, cho người dùng quản trị.
Nhưng tôi sẽ để nó như vậy,
như trống rỗng bởi vì những người không cần thiết cho người dùng quản trị.
Vì vậy, tôi sẽ để nó ở đó.
Vì vậy, lệnh này sẽ kết thúc tạo ra một khách hàng mới với tên 'Admin'.
Vì vậy, nếu người dùng này hoặc tên “Admin” không tồn tại,
sau đó chúng tôi sẽ tạo ra một.
Và sau đó ở đây chúng ta có chức năng gọi lại.
Vì vậy, sai người sử dụng.
Bây giờ tôi sẽ nói,
nếu sai lầm, chúng ta không biết nó đang cố gắng làm gì để chúng ta chỉ đơn giản là ném sai lầm.
Nhưng thông thường chúng ta sẽ không mong đợi điều này xảy ra.
Vì vậy, bây giờ, làm thế nào để bạn chỉ định người dùng này là một người dùng quản trị?
Vì vậy, ngay bây giờ khi tôi đăng ký ở đây,
tôi chỉ đăng ký một người dùng bình thường ở đây,
nhưng chúng tôi muốn cung cấp một vai trò đặc biệt cho người dùng này.
Vì vậy, đó là nơi loopback hỗ trợ một cách xác định vai trò cho người dùng.
Vì vậy, để xác định một vai trò,
chúng tôi sẽ var Role = App.models.Role.
Vì vậy, điều này sẽ cho phép tôi tạo một vai trò,
một người quản trị cuộc gọi vai trò mới ở đây.
Vì vậy, chúng tôi có thể chỉ định máy bay khác nhau cho người dùng khác nhau nếu bạn muốn.
Và để cùng với điều này,
tôi cũng cần phải tạo một RoleMapapping ở đây.
Vì vậy, chúng tôi sẽ nói, App.models.Rolemapping.
Và nếu nó xảy ra như vậy mà cơ sở dữ liệu đã chứa
bất kỳ RoleMapping đã tồn tại,
sau đó tôi sẽ tiêu diệt tất cả những người khi tôi khởi động máy chủ của tôi.
Và sau đó cho phép tôi cố gắng tìm
để xem nếu một vai trò với
quản trị viên tên đó đã
tồn tại trong hệ thống.
Được rồi.
Và trong điều này mất,
như bạn mong đợi,
một chức năng gọi lại và bên trong đây chúng ta sẽ nói, role.Findone.
Vì vậy, nếu một vai trò có tên quản trị viên đã tồn tại,
sau đó tôi không cần phải tạo một vai trò.
Nếu không, nếu điều đó không tồn tại,
thì tôi cần phải tạo ra vai trò.
Vì vậy, chúng tôi sẽ nói, role.Create.
Vì vậy, chúng tôi sẽ tạo vai trò quản trị tại đây.
Và sau đó điều này đưa chúng ta đến các tham số err,
vai trò ở đây, trong chức năng gọi lại.
Bây giờ một lần nữa, ở đây để xử lý lỗi,
chúng tôi sẽ chỉ sao chép này 'nếu lỗi' và sau đó dán nó ở đó.
Tương tự như vậy ở đây cũng, nếu lỗi xảy ra,
sau đó tôi cần phải xử lý điều đó.
Vì vậy, 'nếu lỗi' sau đó 'ném lỗi'.
Nếu không, chúng tôi đã tạo ra vai trò.
Vì vậy, bây giờ tôi cần phải ánh xạ vai trò này cho người dùng cụ thể này mà tôi vừa tạo ra.
Người dùng này mà tôi vừa tạo ra ở đây.
Người dùng này. Tôi muốn cung cấp cho người dùng này vai trò của quản trị viên.
Vì vậy, kể từ khi tôi đã tạo ra vai trò này bởi quản trị viên tên,
vì vậy chúng tôi sẽ nói, role.principals.create.
Vì vậy, đây là cách bạn tạo một ánh xạ giữa vai trò và một người dùng cụ thể ở đây.
Vì vậy, chúng tôi sẽ nói, role.principals.create.
Vì vậy, đây là cú pháp ở đó.
Chúng tôi sẽ nói, PrincipalType: Rolemapping.User
ở đây và bạn sẽ có
một id chính ở đây mà là người sử dụng.
Bây giờ người dùng này đề cập đến những gì?
Người dùng này đề cập đến điều này vừa đi vào.
Vì vậy, khi chúng tôi tạo ra người dùng này,
sau đó khách hàng phải tạo ra một sự trở lại thành công cho chúng tôi ở đây.
Vì vậy, đó là những gì tôi sẽ sử dụng ở đây.
Chúng tôi sẽ nói, người dùng [0].
Vì vậy, đây sẽ là một mảng người dùng đã được tạo ra và chỉ chứa một trong số họ.
Vì vậy, đó là lý do tại sao tôi đang nói người dùng [0].
Và sau đó chúng tôi sẽ gán ID của người dùng đó ở đây.
Vì vậy, đây là cách chúng tôi sẽ tạo một RoleMapping giữa vai trò mà chúng tôi vừa tạo,
vai trò này, và sau đó ánh xạ nó với khách hàng mà chúng tôi vừa tạo ra.
Bây giờ điều này cũng đưa chúng ta đến các tham số, hàm callback.
Và trong chức năng gọi lại này, chúng tôi sẽ chỉ đơn giản là nói,
nếu (err) ném (err).
Nếu không, chúng tôi không thực sự quan tâm đến việc biết những gì khác đã xảy ra ở đó.
Đó là nó. Vì vậy, đây là cách.
Vì vậy, nếu vai trò có tên quản trị viên không tồn tại,
chúng tôi sẽ tạo vai trò đó.
Nếu không- Vì vậy, đây là
phần 'khác' nơi tôi vẫn sẽ cần phải làm ánh xạ này.
Vì vậy, để tôi sao chép mã đó và sau đó tôi sẽ làm chính xác điều đó ở đây.
Vì vậy, role.principals.create và sau đó ánh xạ này cho người dùng ở đó.
Vì vậy, nếu vai trò quản trị đã tồn tại,
thì tất cả những gì họ cần làm là thực hiện ánh xạ.
Vì vậy, điều này sẽ được lưu trữ trong mô hình RoleMapping trong cơ sở dữ liệu của chúng tôi. Đó là nó.
Vì vậy, đoạn mã này mà chúng tôi đưa vào tập tin script.js trước tiên sẽ cố gắng
tìm xem một người dùng quản trị tồn tại và người dùng đó được xác định bởi người quản trị tên.
Nếu không, thì người dùng sẽ được tạo ra và sau đó cũng sẽ tạo vai trò cho người dùng.
Chúng tôi sẽ tạo một vai trò có tên là quản trị viên.
Nếu vai trò đó tồn tại,
thì chúng ta sẽ sử dụng nó.
Nếu không, chúng ta sẽ tạo ra vai trò.
Và sau đó chúng tôi sẽ tạo ra ánh xạ này giữa vai trò và người dùng.
Vì vậy, loopback cho phép chúng tôi làm RoleMapping.
Vì vậy, nói rằng người dùng này không phải là vai trò này.
Vì vậy, ánh xạ này được thực hiện bằng cách sử dụng câu lệnh này.
Vì vậy, điều đó hoàn thành việc thiết lập các máy chủ của chúng tôi.
Vì vậy, một người dùng quản trị sẽ được tạo ra và người dùng quản trị đó sẽ
tự động nhận được vai trò của người quản trị như được cấu hình ở đây.
Đó là nó. Hãy lưu các thay đổi vào script.js.
Và bây giờ các máy chủ loopback của chúng tôi phải sẵn sàng.
Vì vậy, bây giờ chúng tôi sẽ đi và bắt đầu quay trở lại máy chủ của chúng tôi và sau đó kiểm tra những gì chúng tôi có thể làm với điều này.
Đi đến các thiết bị đầu cuối,
chúng ta hãy bắt đầu máy chủ loopback.
Vì vậy, chúng tôi sẽ nói, npm bắt đầu và sau đó máy chủ của chúng tôi nên được lên và chạy.
Hãy đi đến Explorer và sau đó duyệt thông tin ở đó.
Và máy chủ loopback này sẽ tự động
kết nối với MongoDP của tôi bởi vì tôi đã thiết lập kết nối.
Đi đến trình duyệt của tôi,
hãy để tôi tải lại.
Và khi tôi tải lại,
bây giờ bạn sẽ thấy rằng chúng tôi có một khách hàng mới đã được tạo ra ở đây.
Người dùng đã tồn tại trước đó.
Các món ăn, nhà lãnh đạo, và chương trình khuyến mãi đều có ở đó.
Hãy thực hiện một get trên các món ăn.
Bây giờ điều này được kết nối với miệng MongoDB, Mon
goDB của tôi đã có một số món ăn trong đó.
Nếu MongoDB của bạn trống rỗng,
bạn có thể đăng một số món ăn bằng cách sử dụng bài đăng ở đây.
Vì vậy, hãy thử nó ra.
Khi tôi làm một hoạt động get trên các món ăn gạch chéo,
bạn sẽ thấy rằng trong cơ thể phản ứng-
Tất cả các món ăn tồn tại trong cơ sở dữ liệu của tôi đã được lấy tất cả.
Tương tự như vậy, tôi có thể làm một GET trên
chương trình khuyến mãi và tôi sẽ thấy chương trình khuyến mãi đã tồn tại trong cơ sở dữ liệu của tôi ở đó.
Vì vậy, bạn có thể thấy rằng chương trình khuyến mãi đã tồn tại ở đó.
Vì vậy, điều đó cho chúng ta thấy làm thế nào chúng ta có thể lấy thông tin.
Bây giờ, chúng ta hãy thử đăng một món ăn mới.
Vì vậy, để đăng một món ăn mới,
chúng tôi đi đến POST ở đây.
Để tôi sao chép cái này.
Rõ ràng, tại thời điểm này,
bởi vì vì tôi không phải là một đăng nhập,
tôi sẽ không được phép đăng các món ăn như vậy,
nhưng tôi sẽ chứng minh rằng bạn chỉ cần sao chép và dán thông tin này ở đây,
và chúng tôi sẽ cố gắng gửi món ăn đó,
và sau đó khi tôi cố gắng đăng các món ăn,
máy chủ của tôi ngay lập tức trả lời với lỗi này nói, AUTHIZATIZATION_REQUY.
Bạn không được phép thực hiện thao tác này.
Vì vậy, đó là lý do tại sao bạn không được phép thực hiện thao tác này.
Bây giờ, làm thế nào để bạn ủy quyền cho mình?
Vì vậy, để ủy quyền cho mình,
bây giờ nhớ lại rằng chúng tôi đã tạo một người dùng với quản trị viên tên
và người dùng quản trị này đã tồn tại như một khách hàng ở đây.
Vì vậy, đi vào điểm cuối REST API của khách hàng,
nếu bạn cuộn xuống,
xuống dưới đây, bạn sẽ thấy đăng nhập của khách hàng này.
Vì vậy, khi bạn thực hiện một bài đăng trên đăng nhập của khách hàng.
Vì vậy, để đăng nhập của khách hàng,
bạn di chuyển lên đây và sau đó ở đây nó yêu cầu các thông tin đăng nhập.
Vì vậy, trong thông tin đăng nhập,
chúng tôi có thể nhập tên người dùng trong dấu ngoặc kép, và chúng tôi sẽ nói,
Quản trị viên, và sau đó mật khẩu,
chúng tôi sẽ nói, mật khẩu, và sau đó chúng tôi sẽ đăng bài này.
Và sau đó khi bạn đăng nó,
bạn sẽ nhận thấy rằng trong bài trả lời,
LoopBack sẽ gửi lại cho tôi thông tin này.
Bây giờ, trong thông tin
này, id đặc biệt này mà nó gửi trở lại là AccessToken cho máy chủ LoopBack của tôi.
Vì vậy, Tôi chỉ có thể sao chép AccessToken này ở đây,
và sau đó ngay ở trên cùng ở đây,
bạn có thể thấy rằng đây là Token Không Set, đây.
Nó nói rằng Token Không Set.
Và ở đây bạn có thể gõ vào AccessToken này,
và sau đó nói, Set Access Token.
Và sau đó AccessToken của bạn sẽ được thiết lập,
và sau đó tất cả các hoạt động tiếp theo mà bạn thực hiện sẽ tự động mang
AccessToken này trong tiêu đề của thông điệp yêu cầu của tôi.
Vì vậy, theo cách đó, bây giờ quản trị viên của tôi sẽ được phép làm bài viết của các mục ở đó.
Vì vậy, bây giờ tôi đã đăng nhập với tư cách là một quản trị viên,
hãy để tôi đi đến chương trình khuyến mãi,
và sau đó tôi sẽ đăng một chương trình khuyến mãi ở đó,
và cho bạn thấy rằng tôi thực sự có thể đăng chương trình khuyến mãi.
Vì vậy, chúng ta hãy đi đến một bài đăng,
và sau đó chúng tôi sẽ chỉ sao chép này, và sau đó trong dữ liệu,
và sau đó cho tên chúng tôi sẽ nói, Test khuyến mãi,
và hình ảnh chúng tôi sẽ chỉ để nó như vậy, mô tả, Test Mô tả.
Và tôi có thể đăng nó trong đó,
và bạn sẽ thấy
rằng tôi không nên bao gồm id này trong đây bởi vì tôi đã
để LoopBack tự động gán id cho nó.
Hãy để tôi đăng bài này và sau đó bạn sẽ thấy rằng trong cơ thể phản ứng,
khuyến mãi thử nghiệm đã được đăng ở đây.
Và tôi chỉ nhận thấy rằng tôi chưa bao gồm
lá cờ nổi bật cho chương trình khuyến mãi của tôi và các nhà lãnh đạo của tôi.
Vì vậy, tôi sẽ đi vào và bao gồm cờ nổi bật như
một trong những phần của chương trình khuyến mãi của tôi ở đó.
Vì vậy, bây giờ khi tôi làm một GET cho các chương trình khuyến mãi,
bạn sẽ thấy rằng trong tin nhắn trả lời,
bạn sẽ thấy chương trình khuyến mãi cũ đã có trong cơ sở dữ liệu của tôi
và sau đó chương trình khuyến mãi mới mà tôi vừa đăng lên cơ sở dữ liệu của tôi đã được bao gồm trong đây.
Vì vậy, tôi chỉ nhận thấy rằng tôi cần phải thiết lập cờ nổi bật,
tôi sẽ chỉ cho bạn làm thế nào để làm điều đó trong một.
Vì vậy, loại chứng minh cho bạn làm thế nào bạn có thể đăng nhập và khám phá máy chủ LoopBack của bạn.
Hãy để tôi phá hủy mã thông báo này,
vì vậy chúng tôi sẽ chỉ cần loại bỏ mã thông báo,
và sau đó nhấp vào
đó để về cơ bản sẽ gửi mã thông báo truy cập đến một
chuỗi rỗng và do đó mã thông báo của tôi sẽ không còn xử lý,
vì vậy bây giờ người dùng của tôi không còn đăng nhập nữa.
Hãy để tôi tạo ra một khách hàng mới.
Vì vậy, để tạo ra một khách hàng mới, tôi sẽ nói, POST khách hàng.
Và sau đó tôi sẽ sao chép cái này từ đây.
Tôi sẽ tạo cho mình một tài khoản mới ở đây.
Và vì vậy, ở đây,
tôi sẽ loại bỏ các lĩnh vực,
tôi không cần điều đó, tôi không cần id
Vì vậy, cho tên đầu tiên
và EmailVerified sẽ tự động được thiết lập bởi hệ thống.
Vì vậy, hãy để tôi đăng nhập với tư cách là người dùng này.
Vì vậy, tôi chỉ cần gửi tên của tôi, họ,
và hình ảnh hiện tại,
tôi sẽ chỉ cần thiết lập một chuỗi trống ở đó, tên người dùng và email.
Và sau đó chúng tôi sẽ thử nó ra,
và sau đó nó trở lại nói,
Chi tiết: 'mật khẩu' không thể trống.
Vì vậy, bạn sẽ nhận thấy rằng trong đây,
tôi cũng nên bao gồm cùng với tên người dùng,
mật khẩu và sau đó, chúng ta hãy đăng bài này.
Vì vậy, khi bạn đăng nó, nó trở lại với
Response Body nói rằng bạn bây giờ là một phần của hệ thống.
Vì vậy, tên của
bạn, họ của bạn, và tên người dùng của bạn, ID email của bạn
và id mà LoopBack gán cho bạn sẽ được gửi lại cho bạn.
Vì vậy, đây là không có gì ngoài id MongoDB như bạn có thể thấy ở đây.
Vì vậy, bây giờ tôi đã đăng ký như một khách hàng,
tôi sẽ có thể đăng nhập như là khách hàng,
để tôi sẽ đi đến đăng nhập POST ở đây,
và sau đó ở đây thay vì quản trị viên,
tôi sẽ đăng nhập như là người dùng mới mà tôi đã đăng nhập.
Vì vậy, sau đó tôi bấm vào để thử nó ra,
bạn sẽ thấy rằng nó trở lại với id,
vì vậy nó cung cấp cho tôi mã thông báo cho người dùng quản trị này ở đây.
Vì vậy, với điều này chúng tôi đã hoàn thành kiểm tra máy chủ LoopBack mà chúng tôi vừa tạo ra.
Và như tôi vừa đề cập,
tôi nhận thấy rằng các chương trình khuyến mãi và các nhà lãnh đạo không có cờ đặc trưng vì vậy,
tôi sẽ đi vào mã.
Vì vậy, giả sử bạn quên một cái gì
đó như thế này, sau đó bạn chỉ có thể đi vào và chỉnh sửa mã Json nếu bạn muốn.
Vì vậy, tôi sẽ đi vào mã của tôi,
đi đến mã,
tôi sẽ đầu tiên đi vào commons và sau đó tôi sẽ đi vào dishes.json.
Và sau đó trong dishes.json,
tôi thấy tài sản đặc trưng này ở đó.
Tôi sẽ sao chép tài sản đặc trưng này,
và sau đó tôi sẽ đi vào leaders.json,
và sau đó tôi sẽ dán tài sản tính năng đó vào một leaders.json,
và cũng với promotions.json.
Tôi quên bao gồm điều này khi tôi tạo ra những mô hình đó.
Tôi nên làm điều này khi tôi tạo ra mô hình chính nó,
nếu bạn quên một cái gì đó như thế,
thì đây là một cách khác để chỉnh sửa mô hình của bạn
và sau đó đảm bảo rằng mô hình của bạn được thiết lập chính xác.
Vậy, đúng vậy.
Vì vậy, bây giờ chương trình khuyến mãi và các nhà lãnh đạo của tôi cũng sẽ có lá cờ đặc trưng được đặt trong đó.
Với điều này, chúng tôi hoàn thành bài tập này.
Trong bài tập này, chúng ta đã thấy làm thế nào chúng ta có thể thiết lập
một mô hình mới bằng cách mở rộng một lớp mô hình cơ sở đã có trong LoopBack.
Chúng tôi cũng đã thấy cách chúng tôi có thể thiết lập điều khiển truy cập bằng cách sử dụng
danh sách điều khiển truy cập được hỗ trợ bởi LoopBack.
Với điều này, chúng tôi hoàn thành bài tập này.
Đây là thời điểm tốt để bạn có thể làm một get bao phủ với
các nguồn dữ liệu tin nhắn LoopBack và kiểm soát truy cập.