"Terkadang Anda membutuhkan Stuntman sebelum mengirim pengguna yang sebenarnya dan tidak menaruh curiga!"
Kemasan | Versi |
---|---|
RimDev.Stuntman |
Stuntman adalah perpustakaan untuk meniru identitas pengguna selama pengembangan dengan memanfaatkan Identitas Klaim .NET. Digunakan terutama di lingkungan web seperti ASP.NET MVC, ASP.NET Web Forms, dan aplikasi OWIN yang menyajikan HTML. Hal ini memungkinkan Anda menguji berbagai skenario pengguna yang ada di aplikasi Anda dengan hambatan minimal. Ini juga memungkinkan Anda untuk berbagi skenario tersebut dengan anggota tim lain melalui kontrol sumber.
Instal paket RimDev.Stuntman NuGet.
PM> Install-Package RimDev.Stuntman
Stuntman menggunakan OWIN dan terdaftar sebagai middleware, dan memungkinkan skenario pengguna yang telah ditentukan sebelumnya secara terprogram, dalam bentuk identitas klaim. Preset ini dapat digunakan oleh Anda atau anggota tim lain yang bekerja pada basis kode yang sama.
// 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 ) ;
}
}
Berikut cara menggunakan Stuntman dalam tampilan Razor untuk menampilkan pemilih pengguna (dengan asumsi kelas Startup
aplikasi memiliki StuntmanOptions
yang dapat digunakan) .
@* Only show when debug is true in Web.config. *@
@if (System.Web.HttpContext.Current.IsDebuggingEnabled)
{
@Html.Raw(YourApplicationNamespace.Startup.StuntmanOptions.UserPicker(User));
}
Stuntman mendukung token pembawa berdasarkan token akses pengguna ( StuntmanUser.SetAccessToken
). Tidak ada yang istimewa tentang nilainya dan tidak diperlukan pengkodean/dekode tambahan. Setelah autentikasi berhasil, nilai ditambahkan sebagai klaim. Dengan memanfaatkan kode Startup
sebelumnya, Anda dapat membuat permintaan HTTP untuk menggunakan token akses Pengguna 2:
> curl -i -H " Authorization: Bearer 123 " http://localhost:54917/secure
HTTP/1.1 200 OK
Pemeriksaan format dasar dilakukan pada nilai:
> 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.
Pengguna dapat diisi dari lokasi terpencil menggunakan satu atau lebih hal berikut:
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/" ) ;
Berikut ini contoh pengguna JSON yang dapat digunakan oleh StuntmanOptions.AddUsersFromJson(string pathOrUrl)
:
{
"Users" : [
{
"Id" : " user-1 " ,
"Name" : " User 1 "
},
{
"Id" : " user-2 " ,
"Name" : " User 2 "
}
]
}
Punya ide? Mari kita bicarakan hal ini dalam sebuah terbitan!
Temukan bug? Buka terbitan atau kirimkan permintaan tarik!
Lisensi MIT