Làm thế nào để kiểm tra người dùng đã "đăng nhập"?


89

Tôi đang sử dụng xác thực biểu mẫu với phương pháp dưới đây trong ứng dụng ASP.NET của mình

FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);

Làm cách nào để kiểm tra xem người dùng đã đăng nhập hay chưa? Và làm cách nào để lấy tên người dùng của người dùng đã đăng nhập?

Câu trả lời:


189

Tôi quản lý để tìm một trong những chính xác. Nó ở bên dưới.

bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated

BIÊN TẬP

Tín dụng của chỉnh sửa này thuộc về @Gianpiero Caretti , người đã đề xuất điều này trong nhận xét.

bool val1 = (System.Web.HttpContext.Current.User != null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated

35
Chỉ cần một chút sửa chữa để mã an toàn hơn: bool val1 = (System.Web.HttpContext.Current.User! = Null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated
Gianpiero

14
Trong các phiên bản C # mới hơn, bạn có thể sử dụng User?.Identity.IsAuthenticated == true.
bradlis7

3
hoặc User?.Identity.IsAuthenticated ?? false, nhưng mã của @ bradlis7 có lẽ dễ đọc hơn.
Michael

13

Cách đơn giản nhất:

if (Request.IsAuthenticated) ...

6
if (User.Identity.IsAuthenticated)
{
    Page.Title = "Home page for " + User.Identity.Name;
}
else
{
    Page.Title = "Home page for guest user.";
}

Thấy rằng cách tiếp cận này không có nhiều lượt ủng hộ, có bất kỳ hạn chế / vấn đề nào cần lưu ý khi sử dụng cách tiếp cận này không? Ive đã quyết định sử dụng điều này và nó dường như hoạt động, cho đến nay.
pnizzle,

Nó gần giống với câu trả lời được bình chọn nhiều nhất nhưng chúng tôi không sử dụng không gian tên ở đây
mai

6

Request.User.IsAuthenticatedTôi nghĩ là cách dễ nhất để kiểm tra xem chúng có được xác thực hay không (từ bộ nhớ)


1
lớp "Request.LogonUserIdentity" cung cấp tất cả các phương thức và thuộc tính này. Cảm ơn vì tiền hỗ trợ.
BlueBird

1
Không có @beardtwizzle. Đây là hiển thị tài khoản windows đã đăng nhập hay chưa. Ngay cả khi cookie của bạn bị xóa, bạn vẫn có thể thấy tên người dùng của tài khoản window và đăng nhập. Điều này đã làm việc cho tôi. "bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated"
BlueBird
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.