Tôi cảm thấy một chút mâu thuẫn vào lúc này. Tôi có một ứng dụng web bằng cách sử dụng Stripes cho một khung MVC và Spring/Hibernate cho back-end. Tôi có một phương pháp đăng ký tài khoản trong lớp MVC của tôi mà đòi hỏi sự xác nhận sau:Tôi có nên nhân đôi xác thực trong lớp MVC và lớp Dịch vụ của mình không?
- Tên đăng nhập chưa được lấy
- Địa chỉ email được cung cấp chưa được kết hợp với tài khoản khác
Tôi có một phương pháp xác nhận trong Stripes (lớp MVC) để kiểm tra hai trường hợp này nhưng đã tự hỏi liệu lớp dịch vụ của tôi có nên lặp lại các kiểm tra này không? Nếu giao diện tầng dịch vụ được hiển thị như một dịch vụ web thì tôi nghĩ việc xác thực sẽ là một ý tưởng hay, nhưng nếu nó chỉ được sử dụng trong ngữ cảnh của một ứng dụng web thì nó có cần thiết không?
Chỉnh sửa: Tôi không định lặp lại mã xác thực - nghĩa là sao chép cuộc gọi phương thức xác thực ở hai nơi.
tôi thấy lựa chọn của tôi là:
- Duplicate các cuộc gọi xác nhận trong cả hai MVC và lớp dịch vụ
- Chỉ thực hiện xác nhận này trong lớp MVC
- Chỉ thực hiện xác nhận này trong lớp dịch vụ.
Thực tiễn nào tốt nhất ở đây? Tôi đang tìm kiếm lời khuyên/ý kiến về lựa chọn nào tôi nên đi cùng và tại sao. Lưu ý rằng có kiểm tra xác thực đơn giản trên các trường nhập của biểu mẫu đăng ký (như kiểm tra khoảng trống) và tôi cho rằng những điều này chỉ được xử lý bằng xác thực MVC; Tôi chỉ quan tâm đến việc xác thực phức tạp hơn.
Đúng, tôi không có nghĩa là tôi sẽ sao chép mã xác nhận - nghĩa là tôi sẽ gọi cùng một mã xác nhận ở hai nơi – JMM
Như bạn đã đề cập, bạn thực sự cần phải xác thực hai lần, trường hợp bạn có các máy khách khác ngoài lớp điều khiển. Có khả năng tôi có thể thấy khả năng muốn có logic xác thực khác nhau –