12/08/2018, 16:07

Series Hướng Dẫn Lập Trình Ruby on Rails (Phần 8) - Các kỹ thuật trong Rails bạn nên biết(3)

Chào các bạn, Hôm nay mình sẽ tiếp tục Series Hướng Dẫn Lập Trình Ruby on Rails (Phần 8) - Các kỹ thuật trong Rails bạn nên biết - 3 Ở phần này mình sẽ giới thiệu về các Ruby Gem mà mình đã làm qua, đã biết và mình nghĩ các bạn đang bắt đầu học về Ruby on Rails cũng nên biết về tụi nó vì có thể ...

Chào các bạn,

Hôm nay mình sẽ tiếp tục Series Hướng Dẫn Lập Trình Ruby on Rails (Phần 8) - Các kỹ thuật trong Rails bạn nên biết - 3 Ở phần này mình sẽ giới thiệu về các Ruby Gem mà mình đã làm qua, đã biết và mình nghĩ các bạn đang bắt đầu học về Ruby on Rails cũng nên biết về tụi nó vì có thể sau này sẽ hỗ trợ hoặc định hướng các cách làm trong các dự án thực tế :v

Trong bài này khi giới thiệu các gem mình đều có đính kèm phần Guideline hướng dẫn sử dụng gem ấy tương ứng để các bạn tiện theo dõi, các bài viết này đều là của các tác giả khác mà mình thấy hay nên trích dẫn,...rất cám ơn các tác giả của các bài viết hướng dẫn bên dưới ạ (lay4)

Gem Support

Gem hỗ trợ authentication sign_in/sign_up/logout/...

  • Devise: https://github.com/plataformatec/devise Nếu bạn muốn có một chức năng chức thực người dùng với các thao tác:

    • sign_in/sign_up/logout,
    • quản lý danh sách người dùng,
    • các thao tác CRUD cơ bản

    Thì Devise là một gem tuyệt vời giúp bạn thực hiện trên chỉ trong nháy mắt mà thôi =]]. Sự hiệu quả của nó được thể hiện qua hơn 28 triệu lượt download của các developer Ruby on Rails trên trang https://rubygems.org/ Đa số các dự án hiện tại ở công ty mình đều thấy đang sử dụng Gem này để thực hiện authentication phía màn hình quản lý :v Guideline: https://viblo.asia/p/gioi-thieu-gem-devise-amoG84YnGz8P

  • Clearance: https://github.com/thoughtbot/clearance Thằng này cũng có chức năng tương tự, các bạn tham khảo thêm ở trang source của nó nhé. Guideline: https://viblo.asia/p/rails-authentication-voi-gem-clearance-p1PvQ5EBvldr

Gem hỗ trợ phân quyền user

Trong một hệ thống lớn có thể bạn muốn phân quyền cho từng User chỉ được thực hiện một số chức năng nhất định, truy cập vào một số trang nhất định thì những gem sau đây sẽ giúp các bạn thực hiện điều đấy.

  • Cancancan: https://github.com/CanCanCommunity/cancancan Đây là gem được khá nhiều người sử dụng để thực hiện phân quyền trong ứng dụng của mình. Guideline: trang github của nó đã mô tả rất đầy đủ quá trình cài đặt và sử dụng, các bạn tham khảo nhé.
  • role_authorization: https://github.com/asceth/role_authorization

Gem hỗ trợ mã hóa password

  • bcrypt: https://github.com/codahale/bcrypt-ruby Đây là gem giúp người dùng có thể dễ dàng mã hóa được password lưu xuống database để tránh trường hợp nếu một ngày đẹp trời Hacker tấn công hệ thống của bạn và đánh cắp mật khẩu của user, mật khẩu của user đôi khi có thể sử dụng cho nhiều tài khoản khác nhau: tk ngân hàng, tkợ thanh toán trực tuyến, atm,... Nên việc mã hóa password của User là một bước giúp tăng security cho hệ thống của bạn (ngon) Và do cơ chế mã hóa được bcrypt sử dụng là cơ chế mã hóa một chiều nên dù Hacker có lấy được đoạn hash password thì việc tìm ra password là điều khó có thể xảy ra :v Guideline: https://github.com/codahale/bcrypt-ruby#how-to-use-bcrypt-in-your-rails-application
  • scrypt: https://github.com/pbhogan/scrypt Đây cũng là một gem giúp người dùng mã hóa password của user khi lưu xuống db. Theo như tài liệu của nó thì nếu mất 5 giây để sinh ra 1 key nhằm tìm mật khẩu của bạn từ chuỗi hash thì chi phí để tổ chức một cuộc tấn công như thế vào scrypt sẽ gấp 4000 lần so với bcrypt và gấp 20000 lần so với việc sử dụng mã hóa PBKDF2 Con số khá là ấn tượng đấy, dự án sau chắc mình sẽ lưu ý dùng con này thay cho bcrypt xem sao             </div>
            
            <div class=
0