Tôi đang cố gắng để có được một tham chiếu đến đối tượng người dùng trong tập tin Global.asax của tôi Application_BeginRequest
. Tôi đang sử dụng thuộc tính Context.User
nhưng tôi nhận được NullReferenceException
. Có thể lấy tham chiếu đối tượng người dùng trong Application_BeginRequest không?.NET Application_BeginRequest - Làm thế nào để có được tài liệu tham khảo của người dùng?
Trả lời
Bạn không có quyền truy cập vào đối tượng Người dùng vì yêu cầu chưa được xác thực.
Hãy thử sử dụng Application_AuthenticateRequest thay thế.
Dưới đây là một lời giải thích của tất cả các sự kiện Global.asax: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5771721.html
Và hương MSDN của vòng đời ứng dụng: http://msdn.microsoft.com/en-us/library/ms178473.aspx
Edit: tôi thấy những gì bạn đang làm. Thay đổi câu lệnh if của bạn thành câu lệnh if và not (xin lỗi nếu cú pháp sai, tôi không sử dụng VB.NET):
Sub Application_AuthenticateRequest()
If Context.User <> Nothing Then
Throw New Exception("User now exists")
End Sub
Bạn sẽ nhận thấy rằng phương pháp này bị tấn công nhiều lần. Ngoại lệ sẽ không được ném cho đến lần thứ hai hoặc thứ ba. Đó là bởi vì mọi yêu cầu đều tuân theo vòng đời của ứng dụng. Vì vậy, thay vì thực hiện bất kỳ hành động nào khi người dùng là null, bạn nên thực hiện nó khi người dùng không rỗng.
Nếu mục tiêu của bạn là để hạn chế truy cập tự động, bạn nên tạo một HttpModule riêng biệt và gán nó vào các tập tin bạn đang hạn chế
Tuy nhiên, bạn sẽ cần phải cẩn thận không để tiến hành viết lại toàn bộ Cơ sở hạ tầng bảo mật ứng dụng ASP.NET. Thay vào đó, bạn có thể hạn chế quyền truy cập vào các thư mục nhất định dựa trên vai trò.
Không, bạn phải sử dụng Application_AuthenticateRequest
để thay thế. Đó là điểm sớm nhất mà bạn có một người dùng.
Điều này ném ngoại lệ, vẫn không có người dùng hoặc gì? Sub Application_AuthenticateRequest() Nếu Context.User Is Nothing Then Ném ngoại lệ mới ("Không có người dùng") End Sub – Ropstah
- 1. Làm thế nào để dỡ bỏ một tài liệu tham khảo lắp ráp NET trong IronPython
- 2. Hướng dẫn/Tài liệu tham khảo cho Tự động hóa giao diện người dùng của Microsoft
- 3. Làm thế nào để làm tài liệu tham khảo phương pháp trong tham số thuộc tính
- 4. Tài liệu tham khảo TYPO3
- 5. tài liệu tham khảo Variable trong lisp
- 6. Thêm tài liệu tham khảo không có Visual Studio
- 7. Có Assembly.Load cũng tải tài liệu tham khảo của nó?
- 8. Làm thế nào để tham khảo các phương pháp thể hiện trong tài liệu?
- 9. DataContractSerializer không deserializing tài liệu tham khảo
- 10. Làm cách nào để bạn có thể kiểm soát tên tệp cho Tài liệu tham khảo dịch vụ .NET?
- 11. Làm thế nào để "thêm tài liệu tham khảo" trong C++
- 12. Làm thế nào để sử dụng đúng tài liệu tham khảo với các mẫu variadic
- 13. Có tài liệu tham khảo/tài liệu trình duyệt Android nào không?
- 14. Tại sao VS2010 xóa tài liệu tham khảo của tôi?
- 15. Perl, mảng dereference tài liệu tham khảo
- 16. MongoDB loại tài liệu tham khảo nút
- 17. Có nơi nào chính thức để tìm tài liệu tham khảo bài viết của OpenCV không?
- 18. Làm cách nào để xóa Tài liệu tham khảo "Insights For My Domain" của Facebook
- 19. Tài liệu tham khảo dao cạo ASP.NET
- 20. Làm thế nào để tạo ra một loại tài liệu tham khảo từ int
- 21. Làm thế nào để chuyển đổi xsd thành tài liệu có thể đọc được của con người?
- 22. 'này' tài liệu tham khảo trong JavaScript
- 23. sử dụng tài liệu tham khảo web
- 24. Tài liệu tham khảo tốt cho syscalls
- 25. Làm thế nào để mở rộng tài sản tham khảo trong tài nguyên jar?
- 26. emacs c C++ tài liệu tham khảo
- 27. Clojure Vector tài liệu tham khảo
- 28. jQuery selector tài liệu tham khảo để tự
- 29. MSBuild không nhận tài liệu tham khảo của dự án được tham chiếu
- 30. Python tài liệu tham khảo dữ liệu cơ bản, danh sách cùng tham khảo
Hãy kiểm tra bình luận của tôi trong câu trả lời khác bởi Julien ... http://stackoverflow.com/questions/3072768/net-application-beginrequest-how-to-get-user-reference/3072801 # 3072801 – Ropstah
ropstah: Tôi thấy bây giờ điều gì đang xảy ra. Ứng dụng đang thực hiện nhiều yêu cầu (có thể cho hình ảnh, tập lệnh, bảng định kiểu, v.v.) trước khi yêu cầu xác thực được xử lý. Những yêu cầu tệp khác có thể không cần xác thực và đó là lý do tại sao ngoại lệ của bạn bị ném. Hãy thử cập nhật trong câu trả lời của tôi và xem có làm rõ. Ngoài ra, những gì bạn đang cố gắng để đạt được với mã của bạn mà đòi hỏi đối tượng người dùng? –
Đây không phải là trường hợp, tuy nhiên nó ** đã được ** liên quan đến vòng đời 'Global.asax'. Tôi cần chức năng 'User.IsInRole()' chỉ có sẵn ** sau ** _Application_AuthenticateRequest_ cụ thể là trong thủ tục 'Application_AuthorizeRequest()' – Ropstah