"บางครั้งคุณจำเป็นต้องมีสตันท์แมนก่อนที่จะส่งผู้ใช้จริงที่ไม่สงสัยเข้ามา!"
บรรจุุภัณฑ์ | เวอร์ชัน |
---|---|
RimDev.สตันท์แมน |
Stuntman เป็นไลบรารีสำหรับการแอบอ้างเป็นผู้ใช้ในระหว่างการพัฒนาโดยใช้ .NET Claims Identity ใช้เป็นหลักในสภาพแวดล้อมของเว็บ เช่น ASP.NET MVC, ASP.NET Web Forms และแอปพลิเคชัน OWIN ที่รองรับ HTML สิ่งนี้ช่วยให้คุณสามารถทดสอบสถานการณ์ผู้ใช้ต่างๆ ที่มีอยู่ในแอปพลิเคชันของคุณโดยมีข้อขัดแย้งน้อยที่สุด นอกจากนี้ยังช่วยให้คุณแบ่งปันสถานการณ์เหล่านั้นกับสมาชิกในทีมคนอื่นๆ ผ่านการควบคุมแหล่งที่มา
ติดตั้งแพ็คเกจ RimDev.Stuntman NuGet
PM> Install-Package RimDev.Stuntman
Stuntman ใช้ OWIN และลงทะเบียนเป็นมิดเดิลแวร์ และอนุญาตให้ใช้สถานการณ์ผู้ใช้ที่ตั้งค่าไว้ล่วงหน้าทางโปรแกรม ในรูปแบบของข้อมูลระบุตัวตนการอ้างสิทธิ์ คุณหรือสมาชิกในทีมคนอื่นๆ ที่ทำงานบนฐานโค้ดเดียวกันสามารถใช้ค่าที่ตั้งล่วงหน้าเหล่านี้ได้
// OWIN Startup class
public class Startup
{
public static readonly StuntmanOptions StuntmanOptions = new StuntmanOptions ( ) ;
public void Configuration ( IAppBuilder app )
{
StuntmanOptions
. AddUser ( new StuntmanUser ( "user-1" , "User 1" )
. AddClaim ( "given_name" , "John" )
. AddClaim ( "family_name" , "Doe" ) ) ;
// Optionally assign a user an access token.
StuntmanOptions
. AddUser ( new StuntmanUser ( "user-2" , "User 2" )
. SetAccessToken ( "123" )
. AddClaim ( "given_name" , "Mary" )
. AddClaim ( "family_name" , "Smith" ) ) ;
// You can also add users using HTTP/HTTPS or the file system!
StuntmanOptions
. AddUsersFromJson ( "https://example.com/web-test-users.json" )
. AddUsersFromJson ( @"C:local-test-users.json" ) ;
// Optional alignment of user picker
// Supported options are:
// - StuntmanAlignment.Left (default)
// - StuntmanAlignment.Center
// - StuntmanAlignment.Right
StuntmanOptions . SetUserPickerAlignment ( StuntmanAlignment . Right ) ;
// Only show when debug is true in Web.config.
if ( System . Web . HttpContext . Current . IsDebuggingEnabled )
{
app . UseStuntman ( StuntmanOptions ) ;
}
}
}
// ASP.NET Core
public class Startup
{
public static readonly StuntmanOptions StuntmanOptions = new StuntmanOptions ( ) ;
public Startup ( IConfiguration configuration )
{
StuntmanOptions
. AddUser ( new StuntmanUser ( "user-1" , "User 1" )
. AddClaim ( "given_name" , "John" )
. AddClaim ( "family_name" , "Doe" ) ) ;
Configuration = configuration ;
}
public IConfiguration Configuration { get ; }
public void ConfigureServices ( IServiceCollection services )
{
services . AddStuntman ( StuntmanOptions ) ;
}
public void Configure ( IApplicationBuilder app , IHostingEnvironment env )
{
app . UseStuntman ( StuntmanOptions ) ;
}
}
ต่อไปนี้คือวิธีใช้ Stuntman ในมุมมอง Razor เพื่อแสดงตัวเลือกผู้ใช้ (สมมติว่าคลาส Startup
ของแอปพลิเคชันมี StuntmanOptions
ที่สามารถใช้ได้)
@* Only show when debug is true in Web.config. *@
@if (System.Web.HttpContext.Current.IsDebuggingEnabled)
{
@Html.Raw(YourApplicationNamespace.Startup.StuntmanOptions.UserPicker(User));
}
Stuntman รองรับโทเค็นผู้ถือตามโทเค็นการเข้าถึงของผู้ใช้ ( StuntmanUser.SetAccessToken
) ไม่มีอะไรพิเศษเกี่ยวกับค่านี้ และไม่จำเป็นต้องเข้ารหัส/ถอดรหัสเพิ่มเติม เมื่อการรับรองความถูกต้องสำเร็จ มูลค่าจะถูกเพิ่มเป็นการอ้างสิทธิ์ ใช้ประโยชน์จากโค้ด Startup
ก่อนหน้า คุณสามารถสร้างคำขอ HTTP เพื่อใช้โทเค็นการเข้าถึงของผู้ใช้ 2 ได้:
> curl -i -H " Authorization: Bearer 123 " http://localhost:54917/secure
HTTP/1.1 200 OK
การตรวจสอบรูปแบบพื้นฐานเสร็จสิ้นกับค่า:
> curl -i -H " Authorization: Bearer not-real " http://localhost:54917/secure
HTTP/1.1 403 options provided does not include the requested ' not-real ' user.
> curl -i -H " Authorization: Bearer abc 123 " http://localhost:54917/secure
HTTP/1.1 400 Authorization header is not in correct format.
ผู้ใช้สามารถเติมข้อมูลจากสถานที่ห่างไกลได้โดยใช้สิ่งต่อไปนี้:
StuntmanOptions . AddUsersFromJson ( "C: \ path \ to \ users.json" ) ;
StuntmanOptions . AddUsersFromJson ( "https://example.com/users.json" ) ;
//
// On the server
//
StuntmanOptions . EnableServer ( ) ;
//
// On the client
//
StuntmanOptions . AddConfigurationFromServer ( "https://some-stuntman-enabled-app.example.com/" ) ;
// or, if you prefer to not throw an exception
// and have the users silently not added
// if the server is unavailable:
StuntmanOptions . TryAddConfigurationFromServer ( "https://some-stuntman-enabled-app.example.com/" ) ;
นี่คือตัวอย่างผู้ใช้ JSON ที่ StuntmanOptions.AddUsersFromJson(string pathOrUrl)
สามารถใช้ได้ :
{
"Users" : [
{
"Id" : " user-1 " ,
"Name" : " User 1 "
},
{
"Id" : " user-2 " ,
"Name" : " User 2 "
}
]
}
มีความคิด? Let's talk about it in an issue!
ค้นหาจุดบกพร่อง? เปิดประเด็นหรือส่งคำขอดึง!
ใบอนุญาตเอ็มไอที