17

Bảo mật mùa xuân rất tuyệt khi nhà phát triển muốn bảo mật ứng dụng web của mình.Tạo tài khoản, Quên mật khẩu và thay đổi mật khẩu

Tuy nhiên, điều gì về việc tạo tài khoản ? và "quên mật khẩu"? hầu hết các trang đăng nhập đều có các liên kết này cũng như các trường tên người dùng và mật khẩu. Trang đăng nhập mặc định của mùa xuân không có các liên kết này ... trong trường hợp tốt, nó có thể hỗ trợ "nhớ tôi" ...

Spring có hỗ trợ các luồng này, Tạo tài khoản, Quên mật khẩu và thay đổi mật khẩu không? Nếu câu trả lời là có, bạn có thể vui lòng chỉ cho tôi một số tài liệu không?

Tôi đã tìm kiếm sự cố này nhưng không thể tìm thấy bất kỳ điều gì.

Cảm ơn!

+1

Tôi nghĩ câu trả lời là không. Bởi vì những hành động này không phải là hành động chung, chúng khác nhau giữa ứng dụng này với ứng dụng khác. Làm thế nào để mùa xuân sẽ biết những gì các lĩnh vực được yêu cầu trong mẫu đăng ký của bạn? hoặc cách bạn muốn khôi phục mật khẩu? (qua email. sms, vv ..) – luizcarlosfx

+1

Tôi hiểu; nhưng tôi nghĩ có lẽ có cái gì đó chung chung đó là tùy biến và mở rộng (giống như tất cả các dự án mùa xuân khác ...) – user3619976

+0

Nó không phải như vậy khó khăn để thực hiện. Tạo tài khoản là một biểu mẫu cơ bản. Tôi đã triển khai cả 2 trong dự án của mình và không gặp khó khăn gì. Để khôi phục mật khẩu, tôi gửi một email cho người dùng với một uniqueId (http://java.sun.com/javase/6/docs/api/java/util/UUID.html) và tôi có một bộ điều khiển kiểm tra Id đó và nếu nó hợp lệ (được lưu trữ trong bảng user_request của tôi), tôi chuyển tiếp người dùng đến trang nơi anh ta sẽ định nghĩa mật khẩu mới, vì mật khẩu ban đầu được mã hóa. – luizcarlosfx

Trả lời

14

Bạn hoàn toàn đúng. AFAIK không có gói "chung chung" nào thực hiện các luồng này. Tôi đã tìm kiếm rất nhiều cho loại mã này một thời gian trước đây, và không tìm thấy gì cả. Tôi nghĩ rằng @luizcarlosfx là đúng, rằng mỗi ứng dụng có nhu cầu riêng của mình, do đó rất khó để viết một cái gì đó chung chung phù hợp với tất cả các nhu cầu.


EDIT: Tôi thấy ý kiến ​​như "Nó không phải quá khó để thực hiện". Thật. Nhưng bạn phải chắc chắn rằng bạn chăm sóc của tất cả các trường hợp. Ví dụ: điều gì sẽ xảy ra nếu người dùng cố gắng tạo tài khoản đã tồn tại? điều gì sẽ xảy ra nếu người dùng cố gắng tạo tài khoản đã tồn tại nhưng không hoạt động? những gì về chính sách của mật khẩu? (quá dài/quá ngắn/bao nhiêu vốn vv) điều gì về việc gửi email có liên kết kích hoạt tới người dùng? làm thế nào để bạn tạo liên kết này? làm thế nào để bạn mã hóa nó? những gì về bộ điều khiển sẽ nhận được nhấp chuột vào liên kết và kích hoạt tài khoản? và nhiều hơn nữa và nhiều hơn nữa ...


Tuy nhiên, tôi lấy nó một bước về phía trước và cố gắng mã cái gì đó sẽ trả lời hầu hết các dòng - đăng ký, quên mật khẩu, thay đổi mật khẩu vv, và cái gì đó sẽ được bảo đảm đủ để các ứng dụng có thể sử dụng nó mà không sợ rằng nó sẽ dễ dàng bị tấn công.

Tôi đã triển khai dự án JAVA cho trường hợp sử dụng này. Nó là mã nguồn mở, dựa trên Spring-Security. Một phiên bản phát hành là trên Maven-Central, vì vậy bạn không cần phải biên dịch nó, nhưng thay vào đó bạn có thể lấy nó như là maven-dependency cho dự án của bạn!

<dependency> 
    <groupId>com.ohadr</groupId> 
    <artifactId>authentication-flows</artifactId> 
    <version>1.5.0-RELEASE</version> 
</dependency> 

Tôi nghĩ rằng nó trả lời câu hỏi của bạn ...

Có giải thích cho tất cả mọi thứ (và nếu có điều gì là mất tích - cho tôi biết ...)

Bạn có thể find here một ví dụ cho một mã của ứng dụng khách (ví dụ: sử dụng).

Đây là main page of the project cộng với bản trình diễn và another demo is here (nhưng đây là ứng dụng sau khi nâng cấp lên phiên bản 1.6.1 yêu cầu đăng nhập bằng email có tên miền "đẹp" - nice.com). ; sử dụng ví dụ đầu tiên). Đây là ứng dụng web của khách hàng sử dụng dòng xác thực, với README với tất cả các giải thích.

Hy vọng điều đó sẽ hữu ích!

+0

có vẻ tốt! mát mẻ! tuy nhiên, tất cả form (và beans.xml) đều ở phía ** client **, vì vậy client vẫn phải thêm công cụ ... – user3619976

+2

cảm ơn :-) tất nhiên, các form UI là thứ mà mỗi ứng dụng muốn nó khác nhau . do đó, thực sự không có điểm để thử và khái quát hóa biểu mẫu. tuy nhiên, tôi đã ghi lại những trường nào sẽ xuất hiện trong các biểu mẫu này. – OhadR

+2

Công việc thực sự tốt –

0

Tôi nghĩ appfuse là công cụ cho những gì bạn muốn. dòng này là từ đó là tài liệu hướng dẫn:

Appfuse đi ra khỏi hộp với các tính năng mà nhiều ứng dụng cần, bao gồm:

  • xác thực và ủy quyền
  • Quản lý người dùng
  • Ghi nhớ (lưu thông tin đăng nhập của bạn để bạn không phải đăng nhập mỗi lần)
  • Lời nhắc mật khẩu
  • đăng ký và đăng ký
  • SSL chuyển
  • E-mail
  • Extension-less URL tập tin tải lên
  • Generic CRUD backend
  • Full Eclipse, IDEA và NetBeans hỗ trợ
  • khởi động nhanh và không triển khai với Maven Jetty Plugin
  • Có thể kiểm tra trên nhiều máy chủ ứng dụng và cơ sở dữ liệu với Hàng hóa và cấu hình
Các vấn đề liên quan