Authenticate,phân quyền trong nodejs express .



  • Chào cả nhà!
    Em đang làm một cái project quản lí bài đăng.
    Em có nhiều User nhưng em muốn phân quyền cho User thì em nên dùng cái gì? Ví dụ User chỉ có quyền đăng nhưng không có quyền đăng bài nhưng không có quyền thêm User khác .
    Em cảm ơn!



  • Cho role vào model rồi check role ở RestAPI routes.



  • Dùng passprort login xong chia quyền cho từng chức năng đó bạn



  • @nartc Mình cũng đang gặp vấn đề này. Bạn có cách nào giải quyết chi tiết hơn không?



  • @Phuocanh-Ta m dùng passport rồi nhưng chia quyền làm sao ? bạn nói rõ hơn được k ?



  • @CayBap mình chỉ làm ngang mức độ cùi cùi thôi. Lúc đăng nhập xong sẽ lưu được thông tin user trong session. mình sẽ tạo thêm một bảng lưu quyền của user nữa. Sau đó tại router nào cần kiểm tra thì mình sẽ truy dữ liệu từ session, lục cái bảng phân quyền nếu user có quyền vào chức năng đó thì chạy tiếp, k thì redirect về trang chủ.
    Code ở dưới là mình lúc mình đã đăng nhập thành công với passport, và đang kiểm tra user có quyền đăng nhập vào phần admin hay không.

    router.use(function(req, res, next) {
      if (req.isAuthenticated()) {
          req.db.Userrole.findAll({
            where: {userId: req.user.id, roleId: 1}
          }).then(function(rows) {
            if (rows.length == 0) {
              req.logout();
              res.redirect('login');
            } else {
              Models = req.db;
              next();
            }
          });
      } else {
        next();
      }
    });
    


  • @Phuocanh-Ta giống ý mình, mình cũng đang làm như vậy, cảm ơn bác!



  • @CayBap hihi, có điều làm như này có vẻ khá là thô, không bk có plugin hay trong passportjs có sẵn chức năng phân quyền không nữa :D. Mà làm thế này khổ cái là phải có phần set quyền với cả thay đổi quyền nữa, khá là nhọc với cái phần này đấy. Không biết bác có cách nào để làm việc với cái bảng này nhanh gọn không nhỉ





  • @Việt-Quân-Đoàn bác có cái ví dụ thực tế nào dùng cái này gửi em tham khảo với ạ



  • @CayBap: Bạn xem link này là giải quyết được phần phân quyền nek. Mình cũng mới vừa thử làm và thấy ổn ak
    https://www.joshmorony.com/creating-role-based-authentication-with-passport-in-ionic-2-part-1/



  • Phân việc là công việc thuộc tầng business chứ không phải tầng framework, và là công việc mà developer quy định.
    VD bạn tạo user, gắn cho user đó một role có số 1 và 2 ứng với 2 quyền admin(1) và user (2). Vậy khi đăng bài bạn check role user đó là gì, nếu là 1 thì cho đăng, 2 thì không cho đăng.
    Trong trường hợp trên framework chỉ cung cấp công cụ để mình code phân quyền, chứ bản thân nó kg phân quyền giúp bạn.


Log in to reply