"في بعض الأحيان تحتاج إلى Stuntman قبل أن ترسل مستخدمين حقيقيين غير متوقعين!"
طَرد | إصدار |
---|---|
RimDev.Stuntman |
Stuntman هي مكتبة لانتحال هوية المستخدمين أثناء التطوير والاستفادة من هوية مطالبات .NET. يُستخدم بشكل أساسي في بيئات الويب مثل 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 "
}
]
}
هل لديك فكرة؟ دعونا نتحدث عن ذلك في قضية!
العثور على علة؟ افتح مشكلة أو أرسل طلب سحب!
رخصة معهد ماساتشوستس للتكنولوجيا