Tôi mới sử dụng Caliburn.Micro và tôi tự hỏi cách tốt nhất để xử lý các chu kỳ Đăng nhập/Đăng xuất của người dùng trong ứng dụng của tôi là gì. Tôi đã thấy một số gợi ý trực tuyến để thực hiện điều này bằng cách sử dụng một Shell-View trống mà chuyển đổi giữa LoginView và khung nhìn ứng dụng chính, mỗi một ViewModel tùy chỉnh tất nhiên.Làm cách nào để xử lý Đăng nhập/Đăng xuất trong Caliburn.Micro?
Tôi không thực sự thích giải pháp này, vì với tôi đây là 2 cửa sổ riêng biệt với các thuộc tính rất khác nhau (Tiêu đề, Biểu tượng, Kích thước) và có vẻ như một giải pháp ô uế hai thay đổi một cửa sổ trông giống như cửa sổ kia. Một vấn đề nữa là, Cửa sổ Đăng nhập xuất phát từ một thư viện tiện ích mà tôi không kiểm soát và không sử dụng Caliburn.Micro, đó là một cửa sổ cũ đơn giản mang đến cho tôi một sự kiện khi người dùng nhấp vào "Đăng nhập".
Tôi cũng thấy các đề xuất để hiển thị Hộp thoại này trong phương pháp khởi động Bootstrapper, nhưng vấn đề tôi thấy là người dùng có thể chọn "Đăng xuất" của ứng dụng sẽ hiển thị lại hộp thoại Đăng nhập. Nó có vẻ sai với tôi để xử lý việc chuyển đổi giữa các khung nhìn trong Bootstrapper. Những gì tôi muốn là có một số loại ApplicationViewModel hoặc ApplicationController hoạt động giống như một Caliburn Conductor, nhưng thay vì chuyển đổi giữa các khung nhìn bên trong một cửa sổ, nó nên chuyển đổi giữa LoginWindow và MainWindow và cũng nên xử lý việc đóng cửa của toàn bộ ứng dụng (cũng yêu cầu Đăng xuất). Khi kích hoạt nó sẽ hiển thị LoginWindow, xử lý sự kiện Login và sau đó chuyển sang cửa sổ chính (Shell). Nếu người dùng chọn "LogOut", sự kiện sẽ bong bóng lên đến ApplicationViewModel/Controller một lần nữa sẽ tắt/đóng MainWindow, thực hiện Đăng xuất và sau đó hiển thị lại LoginDialog. Tương tự như một sự kiện Close sẽ thực hiện Logout, nhưng sau đó Shutdown toàn bộ ứng dụng.
Vì vậy, câu hỏi của tôi là:
- Bạn nghĩ gì về giải pháp này và làm bạn có một/một tốt hơn?
- Làm cách nào để triển khai tính năng này? ;-)
Cảm ơn rất nhiều!
Khi bạn nói "đồng bằng Window cũ" làm bạn WPF hoặc WinForms? Cửa sổ đăng nhập cũng thực hiện công việc thực tế để xác thực người dùng hay bạn phải xử lý sự kiện "Đăng nhập" và thực hiện điều đó? – Kioshiki
WPF cửa sổ và nó đặt ra một sự kiện đăng nhập mà tôi xử lý bằng cách sử dụng một dịch vụ xác thực mà tôi nhận được từ container IoC của tôi. – aKzenT