18

Tôi đã xem xét sử dụng Spring Security để xác thực/ủy quyền ứng dụng web của tôi (đây sẽ là JDBC).Đăng ký, tạo và quản lý tài khoản người dùng Xuân An

Tuy nhiên, một thành phần cốt lõi dường như bị bỏ qua khỏi quan điểm của tôi. Làm cách nào để đăng ký/tạo người dùng mới? Có API ngoài API không?

Tôi có cần viết đăng ký và quản lý người dùng từ đầu không? Những điều tôi cần làm bao gồm: - Đăng ký người dùng mới - Đặt lại mật khẩu - Gửi email cho người dùng để kích hoạt tài khoản của họ - Gửi email cho người dùng để đặt lại tài khoản của họ.

Cảm ơn bạn trước.

+0

http://stackoverflow.com/questions/23562266/create-account-forgot-password-and-change-password – OhadR

Trả lời

9

Tôi sử dụng Bảo mật mùa xuân trên dự án của mình. Khung không có API để tạo hoặc đăng ký người dùng như bạn đã yêu cầu. Để bảo mật Spring là chung và có thể sử dụng trên nhiều khung công tác, nó chỉ có thể đưa bạn đến trước khi bạn phải viết mã tùy chỉnh. Bạn có thể không thực sự có được một câu trả lời cụ thể hơn về một khuôn khổ hoặc công cụ để sử dụng bởi vì vào thời điểm này, bạn sẽ chỉ sử dụng các khung công tác mà bạn đang sử dụng.

Nếu bạn đã thiết lập để sử dụng người dùng và vai trò trong cơ sở dữ liệu, từ lớp truy cập dữ liệu, bạn sẽ tạo bản ghi trong bảng người dùng hoặc cập nhật mật khẩu (tốt nhất được lưu trữ dưới dạng băm) trong bản ghi đó. Và như Aravind đã nói, Spring cung cấp email support.

Nếu bạn thực sự muốn xem một cách để thực hiện: Tôi đang sử dụng Spring MVC, JSP và Hibernate. Tôi sử dụng các thẻ biểu mẫu của Spring trong một JSP để liên kết một biểu mẫu người dùng mới với một đối tượng Person và phương thức điều khiển của tôi truyền đối tượng Person đó cho Dao của tôi để duy trì nó.

Phương pháp chữ ký khiển trông như thế này ...

@RequestMapping(value = "/newUser", method = RequestMethod.POST) 
public ModelAndView createNewUser(final @Valid @ModelAttribute Person user, 
            final BindingResult result, 
            final SessionStatus status, 
            final @RequestParam(value = "unencodedPassword", required = true) String password) { 
     ... 
     user.getRoles().add(new Role(user, Role.APPLICATION_ROLE.ROLE_USER)); 
     userDao.createNewUser(user); 
     ... 
} 

và PersonDao tôi sẽ sử dụng Hibernate để tồn tại người sử dụng như vậy

@Transactional 
public void createNewUser(Person user) 
{ 
    Session session = sessionFactory.getCurrentSession(); 
    session.save(user); 
    session.flush(); 
} 
+1

Cảm ơn thông tin.Tuy nhiên, bạn có đề xuất về API/Framework/Tool để xử lý việc tạo/đăng ký người dùng bên ngoài mùa xuân không? Hay bạn đề nghị tôi viết một từ đầu? –

+2

Có, tôi khuyên bạn nên viết một từ đầu. Để cung cấp cho bạn một cảm giác bao nhiêu bạn phải viết, để đăng ký một người dùng mới tôi có thể có hàng chục dòng JSP, một tá dòng trong bộ điều khiển Spring MVC, và chỉ một vài dòng trong một DAO. Spring Security giúp bạn hầu hết mọi thứ ở đó, bạn cần phải viết rất ít mã để hoàn thành nó. Lý do không có API để xử lý việc tạo người dùng bên ngoài Spring là bạn sẽ chỉ sử dụng bất kỳ công nghệ nào bạn đang sử dụng, như JSP hoặc JSF và Hibernate hoặc JDBC. – Jay

1

Theo như tôi biết, Spring Security không hỗ trợ tạo và đăng ký người dùng mới. Bạn sẽ phải tự mình quản lý. Tuy nhiên nó có hỗ trợ gửi email. Kiểm tra here để biết thêm về điều này.

+0

Cảm ơn thông tin. Tuy nhiên, bạn có đề xuất về API/Framework/Tool để xử lý việc tạo/đăng ký người dùng bên ngoài mùa xuân không? Hay bạn đề nghị tôi viết một từ đầu? –

+0

Bạn có thể nhận được một số widget tốt được xây dựng với JQuery và tích hợp nó với Spring. Bạn cũng có thể căn cứ vào Đăng nhập của bạn trên openid nhưng cuối cùng không có gì đi kèm với chức năng được tích hợp sẵn. Bạn sẽ phải mã hóa nó. - Aravind Cách đây 11 giờ –

1

Hãy nhìn vào câu trả lời của tôi here.

"Tôi đã thực hiện một dự án JAVA đối với trường hợp sử dụng này. Đó là mở nguồn, dựa trên mùa xuân-Security. Một phiên bản phát hành là trên Maven-Trung, do đó bạn không cần phải biên dịch nó, nhưng thay vào đó bạn có thể tìm nạp nó dưới dạng phụ thuộc của maven cho dự án của bạn! "

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