6 thư viện JavaScript xác thực người dùng

3036

Tác giả: Jonathan Saring

“Xây dựng cho tôi một hệ thống xác thực người dùng trong hai tuần” là một cụm từ phổ biến trong các nhóm R & D những ngày này. Vì nhiều lý do, nhiệm vụ này luôn là một trong những nhiệm vụ để một nhà phát triển duy nhất trong nhóm sắp xếp.

Một mặt, bạn thực sự không muốn lãng phí nhiều thời gian để làm điều đó. Mặt khác, bạn lo ngại rằng hệ thống này có thể được xử lý tốt hơn bởi giải pháp của bạn, để nhân rộng tốt hơn sau này.

Khi các hướng dẫn mới xuất hiện trên web ( một nơi tốt để bắt đầu ) và nhiều nhóm đang cố gắng hiểu phương trình chi phí-lợi ích để thực hiện giải pháp của riêng họ so với sử dụng thư viện hoặc dịch vụ, tôi đã tập hợp một đánh giá ngắn về những gì ở đó. Hy vọng điều này có thể giúp tiết kiệm thời gian và đưa ra quyết định sáng suốt hơn. Hãy bình luận và chia sẻ những hiểu biết của riêng bạn.

Tham khảo các vị trí Javascript tuyển dụng từ các công ty HOT

1. Passport JS

Passport không chỉ là thư viện xác thực người dùng với 15 nghìn sao, đây có lẽ là cách phổ biến nhất để các nhà phát triển JS sử dụng thư viện bên ngoài để xác thực người dùng.

https://github.com/jaredhanson/passport

Với express: https://github.com/expressjs/session

2. Auth0

Mặc dù đây không phải là một thư viện mà là một dịch vụ, đó là một cách mạnh mẽ và nhanh chóng để hoàn thành công việc. Auth0 là một công ty khởi nghiệp (khá lớn) cung cấp nền tảng xác thực & ủy quyền phổ biến rộng rãi cho các ứng dụng web, di động và các ứng dụng kế thừa. Một số cho rằng, đó là giải pháp gần nhất với sự kiện Devise for Ruby on Rails, ngoại trừ bạn có thể kết nối bất kỳ ứng dụng hoặc API bằng bất kỳ ngôn ngữ nào. Có hơn 100 tích hợp được xây dựng sẵn và tại đây là một sự khởi đầu nhanh chóng với Node.js.

https://auth0.com/

3. Permit

Permit là một dự án 1k sao, nhằm mục đích cung cấp một thư viện xác thực không giới hạn của người dùng để xây dựng API Node.js. Permit cho phép bạn thêm lớp xác thực vào bất kỳ API Node.js nào và có thể được sử dụng với các frameworks như Express, Koa, Hapi và Fastify. Nó có thể được sử dụng với nhiều loại API từ REST đến GraphQL, do đó, thiết kế không được đề cập đến. Permit nhằm tập trung vào các API (yêu cầu không trạng thái) và các frameworks. Nó cũng đang được phát triển tích cực, điều này khiến Permit trở thành một lựa chọn thú vị để xem xét. chắc chắn đáng để mắt đến.

https://github.com/ianstormtaylor/permit

Xem ví dụ. Ở đây, một ví dụ với Express:

import { Bearer } from 'permit'
import express from 'express'

const permit = new Bearer({
  basic: 'username', // Also allow a Basic Auth username as a token.
  query: 'access_token', // Also allow an `?access_token=` query parameter.
})

function authenticate(req, res, next) {
  // Try to find the bearer token in the request.
  const token = permit.check(req)

  // No token found, so ask for authentication.
  if (!token) {
    permit.fail(res)
    return next(new Error(`Authentication required!`))
  }

  // Perform your authentication logic however you'd like...
  db.users.findByToken(token, (err, user) => {
    if (err) return next(err)

    // No user found, so their token was invalid.
    if (!user) {
      permit.fail(res)
      return next(new Error(`Authentication invalid!`))
    }

    // Authentication succeeded, save the context and proceed...
    req.user = user
    next()
  })
}

const app = express()

app.get('/', (req, res) => {
  res.send('Some unrestricted content.')
})

app.get('/restricted', authenticate, (req, res) => {
  res.send('Restricted content!')
})

app.listen(3000)

4. Grant

Một thư viện khá mới và đầy hứa hẹn cung cấp OAuth Middleware cho Express, Koa và Hapi – với hơn 180 nhà cung cấp được hỗ trợ và một live playground. Trong trường hợp bạn muốn sử dụng nó với nhà cung cấp OAuth riêng của mình, bạn có thể tự chỉ định khóa được yêu cầu. Mặc dù thư viện này đã được hơn 1K sao, nhưng tài nguyên tương đối khan hiếm, vì vậy hãy cẩn thận thử.

https://github.com/simov/grant

5. Feathers authentication management

Feathers là một open source (11K stars) real-time, một micro-service web framework cho NodeJS cho phép bạn kiểm soát dữ liệu của mình thông qua các tài nguyên RESTful, sockets và plug-ins linh hoạt.

Feathers cũng cung cấp các mô-đun quản lý xác thực cho phép bạn thêm xác minh đăng ký, thiết lập lại khi quên mật khẩu và các khả năng khác cho feathers-authentication cục bộ. Ý tưởng là kết hợp các phương thức xác thực khác nhau dưới một mái nhà, trong một cơ sở hạ tầng linh hoạt. Đây là một hướng dẫn từng bước để giúp bạn bắt đầu.

https://github.com/feathersjs/authentication

https://github.com/feathers-plus/feathers-authentication-management

6. Chỉ dùng Firebase Authentication (cho các app nhỏ)

Đây có thể không nhất thiết là giải pháp lâu dài để quản lý xác thực người dùng trong nền tảng mở rộng của bạn. Tuy nhiên, đây là một cách rất hữu ích để hoàn thành công việc, nhanh chóng và đơn giản, cho các ứng dụng của bạn được triển khai với Firebase.

Firebase Authentication cung cấp dịch vụ phụ trợ, SDK dễ sử dụng và thư viện UI được tạo sẵn để xác thực người dùng với ứng dụng của bạn. Nó hỗ trợ xác thực bằng mật khẩu, số điện thoại, nhà cung cấp nhận dạng liên kết phổ biến như Google, Facebook và Twitter. Tìm hiểu thêm tại đây.

Dưới đây, một hướng dẫn rất hay để xây dựng ứng dụng React tận dụng Firebase cho Người dùng Auth với Facebook, Twitter và GitHub:

https://blog.bitsrc.io/react-oauth-authentication-with-firebase-dfe0e8c5d0d4

Và ở đây, một hướng dẫn tương tự để xây dựng ứng dụng Vue.js với xác thực Firebase:

https://blog.bitsrc.io/build-a-vue-app-with-firebase-authentication-and-database-e7d6816f79af

Và với MERN stack:

https://blog.bitsrc.io/build-a-login-auth-app-with-mern-stack-part-1-c405048e3669

Bài viết gốc được đăng tải tại blog.bitsrc.io