วิธีตรวจสอบผู้ใช้ "เข้าสู่ระบบ"?


89

ฉันใช้การพิสูจน์ตัวตนแบบฟอร์มด้วยวิธีการด้านล่างในแอปพลิเคชัน ASP.NET ของฉัน

FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true);

ฉันจะตรวจสอบได้อย่างไรว่าผู้ใช้เข้าสู่ระบบหรือไม่? และฉันจะรับชื่อผู้ใช้ของผู้ใช้ที่ล็อกอินได้อย่างไร?

คำตอบ:


189

ฉันจัดการเพื่อหาที่ถูกต้อง มันอยู่ด้านล่าง

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

แก้ไข

เครดิตของการแก้ไขนี้ไปที่@Gianpiero Carettiที่แนะนำสิ่งนี้ในความคิดเห็น

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

35
เพียงแค่แก้ไขเล็กน้อยสำหรับรหัสที่ปลอดภัยกว่า: bool val1 = (System.Web.HttpContext.Current.User! = null) && System.Web.HttpContext.Current.User.Identity.IsAuthenticated
Gianpiero

14
ใน C # เวอร์ชันใหม่กว่าคุณสามารถใช้User?.Identity.IsAuthenticated == trueไฟล์.
bradlis7

3
หรือUser?.Identity.IsAuthenticated ?? falseแต่โค้ดของ @ bradlis7 น่าจะอ่านง่ายกว่า
Michael


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

เห็นว่าวิธีนี้ไม่มีการโหวตเพิ่มมากขนาดนั้นมีข้อบกพร่อง / ปัญหาที่ต้องระวังเมื่อใช้แนวทางนี้หรือไม่? ฉันตัดสินใจที่จะใช้สิ่งนี้และดูเหมือนว่าจะได้ผลจนถึงตอนนี้
pnizzle

มันเกือบจะเป็นเช่นเดียวกับด้านบนลงมติคำตอบ แต่เราไม่ได้ใช้ namespaces นี่
เอ็มเอไอ

6

Request.User.IsAuthenticatedฉันคิดว่าวิธีที่ง่ายที่สุดในการตรวจสอบว่าได้รับการรับรองความถูกต้องหรือไม่(จากหน่วยความจำ)


1
คลาส "Request.LogonUserIdentity" ให้วิธีการและคุณสมบัติเหล่านี้ทั้งหมด ขอบคุณสำหรับทิป.
BlueBird

1
ไม่มี @beardtwizzle. นี่เป็นการแสดงบัญชี windows ที่ล็อกอินหรือไม่ แม้ว่าคุกกี้ของคุณจะถูกลบออกไปคุณก็สามารถดูชื่อผู้ใช้ของบัญชีวินโดว์และล็อกอินได้ อันนี้ใช้ได้ผลสำหรับฉัน "bool val1 = System.Web.HttpContext.Current.User.Identity.IsAuthenticated"
BlueBird
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.