คำถามติดแท็ก forms-authentication

9
ASP.NET MVC - ตั้งค่า IIdentity ที่กำหนดเองหรือ IPrincipal
ฉันต้องทำสิ่งที่ค่อนข้างง่าย: ในแอปพลิเคชัน ASP.NET MVC ของฉันฉันต้องการตั้งค่า IIdentity / IPrincipal แบบกำหนดเอง แล้วแต่จำนวนใดจะง่ายกว่า / เหมาะสมกว่า ฉันต้องการที่จะขยายการเริ่มต้นเพื่อที่ฉันสามารถเรียกสิ่งที่ต้องการและUser.Identity.Id User.Identity.Roleไม่มีอะไรแฟนซีเพียงคุณสมบัติพิเศษบางอย่าง ฉันได้อ่านบทความและคำถามมากมาย แต่ฉันรู้สึกว่าฉันทำให้มันหนักกว่าที่เป็นจริง ฉันคิดว่ามันจะง่าย หากผู้ใช้เข้าสู่ระบบฉันต้องการตั้งค่า IIdentity ที่กำหนดเอง ดังนั้นฉันคิดว่าฉันจะใช้Application_PostAuthenticateRequestใน global.asax ของฉัน อย่างไรก็ตามที่เรียกว่าในทุกคำขอและฉันไม่ต้องการโทรไปยังฐานข้อมูลในทุกคำขอที่จะขอข้อมูลทั้งหมดจากฐานข้อมูลและวางในวัตถุ IPrincipal ที่กำหนดเอง ที่ดูเหมือนว่าไม่จำเป็นมากช้าและผิดที่ (ทำสายฐานข้อมูลมี) แต่ฉันอาจผิด หรือข้อมูลนั้นมาจากไหน? ดังนั้นฉันจึงคิดว่าเมื่อใดก็ตามที่ผู้ใช้ลงชื่อเข้าใช้ฉันสามารถเพิ่มตัวแปรที่จำเป็นบางอย่างในเซสชันของฉันซึ่งฉันเพิ่มลงใน IIdentity ที่กำหนดเองในApplication_PostAuthenticateRequestตัวจัดการเหตุการณ์ อย่างไรก็ตามฉันContext.Sessionอยู่ที่nullนั่นเพื่อที่จะไม่ไป ฉันทำงานนี้มาหนึ่งวันแล้วและฉันรู้สึกว่าฉันขาดอะไรไป ไม่ควรทำยากเกินไปใช่มั้ย ฉันยังสับสนกับทุกสิ่งที่เกี่ยวข้อง (กึ่ง) ที่มาพร้อมกับสิ่งนี้ MembershipProvider, MembershipUser, RoleProvider, ProfileProvider, IPrincipal, IIdentity, FormsAuthentication.... ฉันเพียงคนเดียวที่ทุกคนพบอย่างนี้ทำให้เกิดความสับสน? หากใครบางคนบอกฉันได้ว่าวิธีแก้ปัญหาที่ง่ายสง่างามและมีประสิทธิภาพในการจัดเก็บข้อมูลพิเศษบางอย่างในความเป็น II โดยไม่ต้องมีฟัซซี่พิเศษทั้งหมด …

20
วิธีรับผู้ใช้ปัจจุบันใน ASP.NET MVC
ในแบบฟอร์มฉันใช้เพื่อรับผู้ใช้ที่เข้าสู่ระบบในปัจจุบันโดย: Page.CurrentUser ฉันจะรับผู้ใช้ปัจจุบันภายในคลาสคอนโทรลเลอร์ใน ASP.NET MVC ได้อย่างไร

23
FormsAuthentication.SignOut () ไม่ออกจากระบบผู้ใช้
ทุบหัวของฉันกับเรื่องนี้นานเกินไป ฉันจะป้องกันผู้ใช้จากการเรียกดูหน้าเว็บไซต์หลังจากที่พวกเขาออกจากระบบโดยใช้ FormsAuthentication.SignOut ได้อย่างไร ฉันคาดหวังว่าสิ่งนี้จะทำ: FormsAuthentication.SignOut(); Session.Abandon(); FormsAuthentication.RedirectToLoginPage(); แต่มันก็ไม่ได้ หากฉันพิมพ์ URL โดยตรงฉันยังคงสามารถเรียกดูหน้านั้นได้ ฉันไม่ได้ใช้การรักษาความปลอดภัยของคุณเองในขณะที่ดังนั้นฉันลืมว่าทำไมมันไม่ทำงาน

4
วิธีเปลี่ยนเส้นทางไปยัง URL ล็อกอินแบบไดนามิกใน ASP.NET MVC
ฉันกำลังสร้างเว็บไซต์สำหรับผู้เช่าหลายรายซึ่งโฮสต์เพจสำหรับลูกค้า ส่วนแรกของ URL จะเป็นสตริงที่ระบุไคลเอ็นต์ซึ่งกำหนดไว้ใน Global.asax โดยใช้โครงร่างการกำหนดเส้นทาง URL ต่อไปนี้: "{client}/{controller}/{action}/{id}" ใช้งานได้ดีกับ URL เช่น / foo / Home / Index อย่างไรก็ตามเมื่อใช้แอตทริบิวต์ [Authorize] ฉันต้องการเปลี่ยนเส้นทางไปยังหน้าการเข้าสู่ระบบซึ่งใช้รูปแบบการแมปเดียวกันด้วย ดังนั้นหากลูกค้าเป็น foo หน้าล็อกอินจะเป็น / foo / Account / Login แทนการเปลี่ยนเส้นทางคงที่ / Account / Login ที่กำหนดไว้ใน web.config MVC ใช้ HttpUnauthorizedResult เพื่อส่งคืนสถานะ 401 ที่ไม่ได้รับอนุญาตซึ่งฉันคิดว่าเป็นสาเหตุให้ ASP.NET เปลี่ยนเส้นทางไปยังหน้าที่กำหนดใน web.config ไม่มีใครรู้วิธีการแทนที่พฤติกรรมการเปลี่ยนเส้นทางการเข้าสู่ระบบ ASP.NET? หรือจะดีกว่าถ้าเปลี่ยนเส้นทางใน MVC …

4
วิธีตรวจสอบผู้ใช้ "เข้าสู่ระบบ"?
ฉันใช้การพิสูจน์ตัวตนแบบฟอร์มด้วยวิธีการด้านล่างในแอปพลิเคชัน ASP.NET ของฉัน FormsAuthentication.RedirectFromLoginPage(txtUsername.Text, true); ฉันจะตรวจสอบได้อย่างไรว่าผู้ใช้เข้าสู่ระบบหรือไม่? และฉันจะรับชื่อผู้ใช้ของผู้ใช้ที่ล็อกอินได้อย่างไร?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.