2014-04-13 28 views
9

Tôi đang sử dụng thư viện flask-login và tôi chưa thể tìm thấy bất kỳ hướng dẫn hay tài liệu hướng dẫn nào về cách cho phép người dùng đặt lại mật khẩu của họ thông qua email. Tôi có thể xem hướng/tài nguyên nào về cách thực hiện điều này? Một tìm kiếm google toàn diện không tiết lộ bất cứ điều gì hữu ích.Mật khẩu đăng nhập Flask Đặt lại

Trả lời

14

flask-login không chăm sóc email khôi phục mật khẩu và những thứ khác như vậy . Chỉ có ở đó để quản lý các phiên và cookie.

Bạn nên sử dụng Flask-Security để thêm chức năng đặt lại mật khẩu và các tính năng liên quan đến bảo mật phổ biến khác vào bình. Flask-Security sử dụng bình đăng nhập để quản lý các session, nhưng thêm các tính năng khác trên đầu trang để khỏa lấp những tính năng bảo mật:

Email Confirmation

Nếu muốn bạn có thể yêu cầu người dùng mới xác nhận địa chỉ email của họ. Flask-Security sẽ gửi một email đến bất kỳ người dùng mới nào có liên kết xác nhận . Khi điều hướng đến liên kết xác nhận, người dùng sẽ tự động được đăng nhập.Cũng có chế độ xem để gửi lại liên kết xác nhận tới một email cụ thể nếu người dùng xảy ra cố gắng sử dụng mã thông báo đã hết hạn hoặc đã mất email trước đó. Liên kết xác nhận có thể được định cấu hình hết hạn sau một khoảng thời gian được chỉ định.

Password Reset/Phục hồi

đặt lại mật khẩu và phục hồi có sẵn khi người dùng quên hoặc mật khẩu của mình. Flask-Security gửi email cho người dùng bằng liên kết đến lượt xem họ có thể đặt lại mật khẩu của họ. Khi mật khẩu được đặt là , chúng sẽ tự động được đăng nhập và có thể sử dụng mật khẩu mới từ đó trở đi. Các liên kết đặt lại mật khẩu có thể được định cấu hình hết hạn sau một khoảng thời gian được chỉ định là .

Đăng ký người dùng

Flask-Security được đóng gói với chế độ xem đăng ký người dùng cơ bản. Chế độ xem này rất đơn giản và người dùng mới chỉ cần cung cấp địa chỉ email và mật khẩu của họ. Chế độ xem này có thể bị ghi đè [sic] nếu quá trình đăng ký của bạn yêu cầu nhiều trường hơn.

+0

Điều này hoàn thành những gì tôi muốn, cảm ơn. –

10

cơ sở logic:

  1. Tạo hình thức mật khẩu reset với email lĩnh vực.
  2. Khi người sử dụng gửi hình thức thì bạn nên:
    1. check email này trong cơ sở dữ liệu
    2. tạo tầm thường crypto key ngẫu nhiên bí mật (key tiếp theo chỉ bí mật)
    3. cửa hàng phím này, dấu thời gian hiện tại và người dùng nhận dạng bộ nhớ cache hoặc cơ sở dữ liệu
    4. gửi đến email người dùng hoặc sms
  3. Khi người dùng áp dụng khóa bí mật (ví dụ với url hoặc hình thức đặc biệt), bạn nên:
    1. xác nhận nó (tồn tại, chưa hết hạn, không được sử dụng trước đó)
    2. get định danh người dùng
    3. xóa hoặc đánh dấu như được sử dụng hiện tại khóa bí mật
    4. cung cấp logic để nhập/tạo mật khẩu mới.

Logic để nhập/tạo mật khẩu có thể khác nhau:

  1. đăng nhập người dùng và hiển thị form để nhập mật khẩu mới - một lần đăng nhập key dạng
  2. chương trình nhập mật khẩu so với đăng nhập nếu hợp lệ
  3. tạo mật khẩu mới và gửi mật khẩu đó tới email của người dùng
  4. tạo khóa bí mật mới cho biểu mẫu để nhập mật khẩu mới và gửi mật khẩu đó tới email người dùng
  5. tạo khóa bí mật mới phê duyệt hình thức, gửi qua sms, hình thức chương trình nhập mật khẩu mới và chính khóa bí mật sau đó đăng nhập nếu hợp lệ
+0

Câu trả lời hay. Sử dụng Flask-Security làm cho cuộc sống dễ dàng hơn một chút vì tôi không phải viết bất cứ thứ gì từ đầu, nhưng phương pháp này chắc chắn hữu ích. –

Các vấn đề liên quan