รุ่นดูคอนโทรลเลอร์
Namespaces: System.web.*, System.web.mvc, System.web.mvc.*
URL: ฐาน/คอนโทรลเลอร์/การกระทำ/พารามิเตอร์
App_start ยืนยันเช่น: Bundle, ตัวกรอง, การกำหนดเส้นทาง
ผู้ควบคุม:
คอนโทรลเลอร์/คอนโทรลเลอร์เบส -> ActionResult
คุณสมบัติ: ValidAterequest, ViewBag, ผู้ใช้, เซสชัน, เซิร์ฟเวอร์, คำขอ, การตอบสนอง, httpContext, controlerContext
วิธีการ: ตรวจสอบ, actionResults
คอนโทรลเลอร์เพื่อดูข้อมูลที่ผ่าน: * ViewBag, ViewData, TempData * อินสแตนซ์แบบจำลองที่สร้างขึ้นใน ActionResult, ผ่านเป็นพารามิเตอร์ View (), ใน View @Model App.Models.Person ระบุไว้ในส่วนที่เหลือของหน้าเราใช้แบบจำลอง
มุมมอง:
*.cshtml, ไวยากรณ์มีดโกน, @ & @ {... }
@Helper, @Model, @Section Name {... }
คุณสมบัติ: HTML, AJAX, ViewBag, ViewContext, เซสชัน, ผู้ใช้, บริบท, คำขอ, การตอบสนอง, เซิร์ฟเวอร์, แคช, เค้าโครง
วิธีการ: renderbody (), rendersection (), renderpage (), @styles.render ("bunde url"), @scripts.render ("bunde url")
htmlattributes ใน @html/ajax ผู้ช่วยเป็นวัตถุที่ไม่ระบุชื่อเช่น: ใหม่ {id = "ผู้ใช้"}
แอตทริบิวต์คอนโทรลเลอร์และแอ็คชั่น : Aldanonymous, อนุญาต, httpget/delete/head/on./patch/post/put, nonact
การดำเนินการ:
[httpget/post/put/delete] แอตทริบิวต์เพื่อระบุวิธีการ
ผลลัพธ์: เปลี่ยนเส้นทาง, บางส่วน, JSON, JavaScript, ไฟล์, เนื้อหา, ดู, ว่างเปล่า, httpstatuscode
การกระทำสามารถส่งคืนประเภทอื่นนอกเหนือจาก actionResult เช่นสตริง
พารามิเตอร์การดำเนินการผ่านเป็น:
ผู้ช่วย:
html:
วิธีการ: การกระทำ, actionlink, routelink, startform, endform, antiforgerytoken, แสดง, ฉลาก, วิธีการที่เกี่ยวข้องกับอินพุต, วิธีการตรวจสอบความถูกต้อง
แบบฟอร์มตัวอย่าง:
@using (Html.BeginForm("action","controller", FormMethod.Post))
{
@Html.TextBox("tb1")
<button type="submit"/>
}
AJAX:
วิธีการ: ActionLink, routelink, startform
เริ่มต้นใน AJAX นั้นคล้ายกับการเปลี่ยนแปลง HTML ด้วยการเพิ่มพารามิเตอร์วัตถุ Ajaxoptions
Ajaxoptions มีตัวเลือกเพิ่มเติมเช่นองค์ประกอบเพื่ออัปเดตและฟังก์ชั่นการโทรกลับ
การประชุม:
คุณสมบัติคอนโทรลเลอร์และมุมมองมีประโยชน์สำหรับการจัดการเซสชัน
เบราว์เซอร์ได้รับ ASP.NET_SESSIONID SESSION COOKIE
สามารถเข้าถึงได้เป็นประเภทที่จัดทำดัชนีจัดเก็บข้อมูลเซสชันที่มีประโยชน์ในมูลค่า
คุณสมบัติและวิธีการมุ่งเน้นไปที่เซสชันและการรวบรวมคู่ของคีย์/ค่า
แบบฟอร์ม:
แบบฟอร์มสามารถเขียนได้ใน HTML ธรรมดา:
<form method="post" action="/Home/NameAge">
<input type="text" name="name" />
<input type="number" name="age" />
<input type="submit"/>
</form>
ด้วยวิธีการดำเนินการทำให้ดูเหมือนว่า:
[HttpPost]
public ActionResult NameAge(string name, int age)
{
ViewBag.Name = name;
ViewBag.Age = age;
return View();
}
ประเภทที่กำหนดเอง (หนังสือ, บุคคล, ... ) สามารถใช้เป็นพารามิเตอร์การกระทำในกรณีนั้นแอตทริบิวต์ชื่ออินพุตควรตรงกับชื่อประเภทคุณสมบัติ
ในกรณีที่มีพารามิเตอร์การกระทำคูณแอตทริบิวต์ชื่ออินพุตควรตรงกับรูปแบบ: พารามิเตอร์. property (person1.name)
ระบุค่าองค์ประกอบอินพุตที่จะถูกเบี่ยงเบนไปยังพารามิเตอร์: ดัชนีแอ็คชั่นสาธารณะ ([bind (รวม = "id, ชื่อ")] บุคคล) {... }
@html.display/label/editorfor (m => m.age) เพื่อทำการเชื่อมโยงข้อมูล
แอตทริบิวต์คำอธิบายประกอบข้อมูลสำหรับเงื่อนไขแบบจำลอง
การตรวจสอบด้านเซิร์ฟเวอร์: ดู: @html.labelfor (m => m.firstname) @html.editorfor (m => m.firstname) @html.validationmessagefor (m => m.firstname) คอนโทรลเลอร์: public ActionResult Index () [httppost] ดัชนีแอ็คชั่นสาธารณะ (คนที่แต่งตัวประหลาด) {ถ้า (modelstate.isvalid) {return redirect ("okview"); } Return View (Guy); -
ดาวน์โหลดไฟล์:
อัปโหลดไฟล์:
HttppostedFileBase & ประเภทที่ได้รับจะใช้เป็นพารามิเตอร์วิธีการกระทำเมื่อเราอัปโหลดไฟล์โดยใช้แบบฟอร์ม
ดูวิธี html.beginform ใช้พารามิเตอร์เพิ่มเติม: ใหม่ {enctype = "multipart/form-data"}
ในการดำเนินการเราเรียก file.saveas (@"path") เพื่อบันทึกไฟล์
คุณสมบัติ เซิร์ฟเวอร์ สามารถใช้ในการแมปท้องถิ่นกับพา ธ ทั่วโลก
โครงสร้างพื้นฐาน:
app_start มีไฟล์ identityconfig.cs & startup.auth.cs ไฟล์
ใหม่เนมสเปซทั่วไป: microsoft.aspnet.identity, microsoft.aspnet.identity*, microsoft.owin, microsoft.owin.security, microsoft.owin.security*, system.security.claims
คุณสมบัติผู้ใช้ในคอนโทรลเลอร์และมุมมองสามารถใช้เพื่อรับข้อมูลผู้ใช้ สมาชิกหลักคือ Identity & Isinrole (ชื่อสตริง)
request.isauthenticated ในมุมมองเพื่อตรวจสอบว่าผู้ใช้ได้รับการรับรองความถูกต้องหรือไม่
คอนโทรลเลอร์มีบัญชีผู้ควบคุมสำหรับการดำเนินการเข้าสู่ระบบ/ลงชื่อสมัครใช้
โมเดลมี AccountViewModels & IdentityModels
ประเภทฐานที่ใช้กันทั่วไป: IdentityUser, IdentityDbContext, UserManager, SigninManager
ประเภททั่วไป:
IdentityUser, IdentityDbContext, UserManager, SigninManager, iAuthenticationManager เป็นประเภทที่ใช้กันทั่วไปในการจัดการบัญชี พวกเขาสามารถสืบทอดและขยายได้
IdentityUser มีข้อมูลบัญชีผู้ใช้เช่นชื่อผู้ใช้รหัสผ่านอีเมลแฮช
IdentityDbContext เป็นบริบทฐานข้อมูล EntityFramework ที่ใช้สำหรับการจัดเก็บข้อมูลผู้ใช้
UserManager สามารถสร้างค้นหาและดำเนินการอื่น ๆ ที่เกี่ยวข้องกับผู้ใช้
SignInManager สามารถลงชื่อเข้าใช้ผู้ใช้ในเซสชันหรือถ้า จำช่องทำเครื่องหมายที่ฉัน ได้รับการตรวจสอบด้วยวิธีที่ถาวร
iauthenticationManager สามารถออกจากระบบผู้ใช้
ฐานข้อมูล:
ฐานข้อมูลทดสอบอยู่ในโฟลเดอร์ APP_DATA, *.MDF ไฟล์ สตริงการเชื่อมต่ออยู่ใน web.config และใช้งานโดย ApplicationDbContext
ฐานข้อมูลประกอบด้วยตารางถัดไป: ผู้ใช้บทบาท userclaims, userlogins, userroles
OAuth2.0 & OpenID Connect:
หลังจากได้รับรหัสลูกค้าและความลับพวกเขาจะต้องเพิ่มใน app_start> startup.auth.cs
ใน MVC ประเภทการเข้าสู่ระบบนี้เรียกว่า "ภายนอก" เข้าสู่ระบบ
บทบาทและการเรียกร้อง:
[Authorize] แอตทริบิวต์ใช้เพื่ออนุญาตเฉพาะผู้ใช้ที่ได้รับการรับรองความถูกต้องในคอนโทรลเลอร์/การกระทำ
[lewalanonymous] แทนที่ว่า
IdentityUserclim & IdentityUlerole มักใช้
ApplicationUser/IdentityUser มีบทบาทและการเรียกร้องคุณสมบัติ
คุณสมบัติ UserManager สามารถใช้ในการจัดการการอ้างสิทธิ์/บทบาทสำหรับผู้ใช้เฉพาะ
IdentityDbContext/ApplicationDbContext มีตารางบทบาท
RoleManager มีไว้สำหรับบทบาทสิ่งที่ UserManager มีไว้สำหรับผู้ใช้
[Authorize (users = "... ", Roles = "... ")] พารามิเตอร์แอตทริบิวต์สามารถใช้เพื่อ จำกัด การเข้าถึงตัวควบคุม/การเข้าถึงการดำเนินการเพิ่มเติม
สร้างขึ้นบน MVC เพื่อให้การใช้งานที่จำเป็นสำหรับการพัฒนาบริการพักผ่อน
app_start มี webapiconfig.cs ที่จัดการการกำหนดค่า API และการกำหนดเส้นทาง API ไม่ได้ทำโดย routeconfig.cs
Apicontroller เป็นประเภทที่สืบทอดโดยแอปพลิเคชันคอนโทรลเลอร์
BaseUrl/Help ให้เอกสาร API ที่สร้างขึ้น
เครื่องมือที่ใช้กันทั่วไปสำหรับการทดสอบคือ Postman & Fiddler
การดำเนินการ:
ชื่อวิธีการใช้งานตรงกับวิธี HTTP ที่ใช้ในการเข้าถึง
รับ/โพสต์/put/ลบ API/คอนโทรลเลอร์
ประเภทการส่งคืนการกระทำสามารถเป็นสตริง, int, ienumerable <t> และอื่น ๆ หรือประเภทที่ได้จาก ihttpactionResult เช่น ok (), notfound (), ...
แอตทริบิวต์เส้นทางด้านบนวิธีการกระทำสามารถระบุเส้นทางที่กำหนดเองเพื่อเข้าถึง
[FromBody] & [Fromuri] สามารถใช้กับพารามิเตอร์วิธีการดำเนินการเพื่อระบุแหล่งกำเนิดของพวกเขา
หน้าช่วยเหลือ (/วิธีใช้) มีเส้นทาง API และคำอธิบายเกี่ยวกับการจัดการบัญชี ตัวอย่างเช่น API/บัญชี/การลงทะเบียนมีข้อมูลเช่นวิธี HTTP และพารามิเตอร์ที่ใช้
ลงทะเบียน:
/ช่วยเหลือ API/บัญชี/ลงทะเบียนอธิบายวิธีการสร้างบัญชี ในบุรุษไปรษณีย์เราสามารถส่งคำขอโพสต์ไปยังจุดสิ้นสุดนั้นด้วยข้อมูลที่จำเป็นในร่างกายเป็น x-www-form-urlencoded หรือ JSON ดิบ หากเราได้รับการตอบกลับ 200 OK บัญชีจะถูกสร้างขึ้น
เข้าสู่ระบบ / รับโทเค็น:
สิ่งนี้ไม่ได้บันทึกไว้ในหน้าวิธีใช้ เราได้รับโทเค็นจากเส้นทาง /โทเค็น Post Request With Body X-WWW-FORM-URLENCODED ที่มี: Grant_Type: รหัสผ่านชื่อผู้ใช้: อีเมลรหัสผ่าน: รหัสผ่าน
การตอบสนองอยู่ในร่างกายมันมี JSON เราต้องการค่า access_token สำหรับการร้องขอไปยังทรัพยากรที่ได้รับการป้องกัน
รับทรัพยากรที่ได้รับการป้องกัน:
การได้รับทรัพยากรจากการกระทำหรือตัวควบคุมที่มีแอตทริบิวต์ [อนุญาต] ต้องใช้โทเค็นการเข้าถึง
เราขอรับการร้องขอไปยัง API/ค่าด้วยส่วนหัวการอนุญาตที่มีค่า: "ผู้ถือ access_token_value"
ภายนอก Auth / OAuth2.0 & OIDC: