- vừa được xem lúc

Handle role trong reactjs

0 0 120

Người đăng: Nguyen Duc

Theo Viblo Asia

Giới thiệu

Lúc mới học reactjs mình gặp nhiều khó khăn trong việc control role. Mặc dù tuỳ dự án tuỳ spec sẽ có cách xử lý khác nhau nhưng cơ bản thì giống nhau. Mình sẽ giới thiệu sơ cách mình và mọi người hay dùng, ae hứng thú thì tìm hiểu thêm nhé ?

Lý thuyết

Cách mình đề cập cơ bản thì nó như này: Login xong -> lưu role vào localStorage, dùng HOC để check role trước khi vào component, nếu không có quyền thì redirect về trang 404 hoặc Dashboard gì đó, với component mà nhiều role có thể vào nhưng thao tác chi tiết mới chia ra thì phải check role trong từng function.

  1. Lưu role sau khi login Sau khi user login thì sẽ có cách để lấy role từ BE, ta cần lưu vào localStorage để lấy ra check khi cần. Nhưng localStorage thì user cũng có thể sửa nên các bạn có thể mã hoá nó, dù chắc chắn là BE cũng check role khi có request từ FE rồi nên không cần quá lo nhưng mã hoá cho hay :v Mình thì hay dùng js-base64 https://www.npmjs.com/package/js-base64

Có 1 vấn đề là nếu user save account và auto login lần sau, trong khi role của user đó đã thay đổi thì sao? Cái này cũng tuỳ spec, các bạn có thể set sau 3 ngày thì fetch lại role gì đó, để check quá 3 ngày thì cũng lưu 1 cái cờ vào localStorage.

  1. Bọc component với HOC để check role Ai chưa biết về HOC thì có thể xem ở đây https://viblo.asia/p/higher-order-components-in-react-maGK7Lw9Zj2 Cơ bản thì nó là 1 hàm nhận vào 1 component và trả về 1 component. Mình có thể check role để return component trong này: có role thì return component đầu vào, không thì return <Redirect />

Demo:

const verifyPermission = (Component, permission) => { function Verify() { const isAccessible = checkIsAccessible(permission); if (!isAccessible) { return <Redirect to="/dashboard" />; } return <Component />; } return Verify;
}; export default verifyPermission;

Áp dụng:

function Meo() { return ( ... );
} export default verifyPermission( Meo, ['roleA', 'roleB'],
);

Kết luận

Lý thuyết chỉ có vậy thôi, khá đơn giản nhỉ :v Hãy thử tìm thêm các cách khác nữa nhé!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Bài toán phân quyền vấn đề muôn thuở.

(* Trong bài viết này mình chỉ nêu quan điểm và những thứ mình đã từng làm với việc phân quyền trên thực tế, chỉ mang tính tham khảo cho mọi người. Nếu có bất kỳ ý kiến góp ý nào hãy bình luận ở dưới

0 0 34

- vừa được xem lúc

Những điều cần lưu ý và sử dụng Hook trong React (Phần 5)

V. Sử dụng useRef như thế nào cho đúng.

0 0 127

- vừa được xem lúc

7 Cách viết code React "clean" hơn

Mở đầu. Là nhà phát triển React, tất cả chúng ta đều muốn viết code sạch hơn, đơn giản hơn và dễ đọc hơn. 1. Sử dụng JSX shorthands.

0 0 188

- vừa được xem lúc

Create app covid-19 use Reactjs

Chào các bạn hôm nay mình sẽ chia sẻ với các bạn một app covid-19, để mọi người cùng tham khảo, tính năng của App này chỉ đơn giản là show số liệu về dịch Covid của các nước trên thế giới như: Số ngườ

0 0 39

- vừa được xem lúc

ReactJS Custom Hooks

ReactJS cung cấp rất nhiều cho bạn các hook mà bạn có thể sử dụng hằng ngày vào project của mình. Nhưng bên cạnh đó bạn có thể tự tạo ra các hook của riêng bạn để sử dụng, làm cho việc tối ưu hóa code

0 0 65

- vừa được xem lúc

3 cách để tránh re-render khi dùng React context

3 cách để tránh re-render khi dùng React context. Nếu đã từng sử dụng React context cho dự án của bạn, và gặp phải tình trạng các component con - Consumer re-render rất nhiều lần, thậm chí bị sai logi

0 0 25