Tôi đã ghi đè cho bộ điều khiển kiểm tra xem dữ liệu phiên nhất định có tồn tại không. Dữ liệu này được yêu cầu để kho lưu trữ hoạt động bình thường, vì vậy nếu nó không tồn tại thì sau khi kiểm tra người dùng sẽ được đăng xuất.Chuyển hướng từ Bộ điều khiển Khởi tạo không hoạt động
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
if (Session["CompanyID"] != null)
{
repo.CompanyID = (long)Session["CompanyID"];
}
else
{
RedirectToAction("LogOff", "Account");
}
}
Mã của tôi trông như thế này, nhưng ngay cả khi RedirectToAction được gọi là bộ điều khiển vẫn mở hành động mặc định và người dùng chưa đăng xuất. Bạn có thể giới thiệu cách xử lý vấn đề này không?
Tôi đang sử dụng dữ liệu phiên này theo cách như vậy vì đây là nơi đầu tiên tôi có thể truy cập được và tôi có thể kiểm tra xem dữ liệu cụ thể này có tồn tại không. Nó được viết khi người dùng đăng nhập.
Dữ liệu này là một phần của Người dùng trong cơ sở dữ liệu. Tôi đã tạo thành viên tùy chỉnh và nhà cung cấp vai trò. Có cách nào để thêm dữ liệu này để "Người dùng" của loại MembershipUser bằng cách nào đó để nó có thể được truy cập trong constructor như tên người dùng?
Tôi hiểu nguyên tắc, nhưng có vẻ hơi không thực tế. Tôi không thể làm cho nó một bộ lọc toàn cầu vì có các khu vực công cộng của ứng dụng, và sau đó tôi phải áp dụng nó cho mọi hành động bên trong khu vực yêu cầu nó? Có cách nào khác để phá vỡ tải của bộ điều khiển sau khi khởi tạo và gửi nó đến hành động khác của bộ điều khiển khác? – Zaak
Bạn có thể áp dụng thuộc tính cho bộ điều khiển, và nó sẽ được áp dụng cho mọi hành động trong bộ điều khiển đó, hoặc một lớp cơ sở điều khiển và sau đó hành động sẽ được áp dụng cho mọi hành động của lớp dẫn xuất! –
Hmm, cách này vẫn không giải quyết được sự thật tôi phải đặt nó một lần. Dường như việc thực hiện mọi thứ thông qua FilterAttribute theo cách này sẽ thiết lập nó mỗi khi một hành động thực hiện thay vì chỉ khi Controller được khởi tạo? – Zaak