„Manchmal braucht man einen Stuntman, bevor man echte, ahnungslose Benutzer schickt!“
Paket | Version |
---|---|
RimDev.Stuntman |
Stuntman ist eine Bibliothek zum Imitieren von Benutzern während der Entwicklung unter Nutzung von .NET Claims Identity. Wird hauptsächlich in Webumgebungen wie ASP.NET MVC, ASP.NET Web Forms und OWIN-Anwendungen verwendet, die HTML bereitstellen. Auf diese Weise können Sie verschiedene Benutzerszenarien, die in Ihrer Anwendung vorhanden sind, mit minimaler Reibung testen. Außerdem können Sie diese Szenarien über die Quellcodeverwaltung mit anderen Teammitgliedern teilen.
Installieren Sie das RimDev.Stuntman NuGet-Paket.
PM> Install-Package RimDev.Stuntman
Stuntman verwendet OWIN, ist als Middleware registriert und ermöglicht programmgesteuert voreingestellte Benutzerszenarien in Form von Anspruchsidentitäten. Diese Voreinstellungen können von Ihnen oder anderen Teammitgliedern verwendet werden, die an derselben Codebasis arbeiten.
// 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 ) ;
}
}
Hier erfahren Sie, wie Sie Stuntman in einer Razor -Ansicht verwenden, um die Benutzerauswahl anzuzeigen (vorausgesetzt, die Startup
Klasse der Anwendung verfügt über StuntmanOptions
, die verwendet werden können) .
@* Only show when debug is true in Web.config. *@
@if (System.Web.HttpContext.Current.IsDebuggingEnabled)
{
@Html.Raw(YourApplicationNamespace.Startup.StuntmanOptions.UserPicker(User));
}
Stuntman unterstützt Bearer-Tokens basierend auf dem Zugriffstoken eines Benutzers ( StuntmanUser.SetAccessToken
). Der Wert hat keine Besonderheiten und es ist keine zusätzliche Kodierung/Dekodierung erforderlich. Bei erfolgreicher Authentifizierung wird der Wert als Anspruch hinzugefügt. Mithilfe des vorherigen Startup
könnten Sie eine HTTP-Anfrage erstellen, um das Zugriffstoken von Benutzer 2 zu verwenden:
> curl -i -H " Authorization: Bearer 123 " http://localhost:54917/secure
HTTP/1.1 200 OK
Die grundlegende Formatprüfung erfolgt für den Wert:
> 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.
Benutzer können von Remote-Standorten aus mit einer oder mehreren der folgenden Methoden bestückt werden:
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/" ) ;
Hier ist ein Beispiel eines Benutzer-JSON, das von StuntmanOptions.AddUsersFromJson(string pathOrUrl)
genutzt werden kann:
{
"Users" : [
{
"Id" : " user-1 " ,
"Name" : " User 1 "
},
{
"Id" : " user-2 " ,
"Name" : " User 2 "
}
]
}
Haben Sie eine Idee? Lassen Sie uns in einer Ausgabe darüber sprechen!
Einen Fehler finden? Öffnen Sie ein Issue oder senden Sie eine Pull-Anfrage!
MIT-Lizenz