Practical .NET packages I publish and maintain: identity protection, text inspection, unit conversion and secure route permissions. Pick the tool that fits your application.
Protect usernames, identifiers and email identities against reserved names, impersonation and confusing lookalikes.
WHERE IT FITS Use it when users create accounts, choose public handles or register email identities.
LIVE PLAYGROUNDREAL PACKAGE ENGINE
var checker = new Checker();
var result = checker.Check("administrator");
Console.WriteLine(result.IsClaimable);
Email identity and domain lookalikes
Explore strict existing-address checks, relaxed user registration, and strict issued addresses. Protected example domains: lidl.nl and example.com.
Run the email demo to view syntax, local-part and domain diagnostics.
var options = EmailOptions.ForUserRegistration();
options.ProtectedDomains.Add("example.com");
var email = new EmailChecker(options).CheckExistingAddress("support@example.com");
Run the demo to see its result.
Developer integration & companion packages
Unclaimable.AspNetCore wires the checker into dependency injection, Unclaimable.FluentValidation adds validation extensions, and Unclaimable.Extended adds optional identity datasets. The email demo above uses Unclaimable.Email.
builder.Services.AddUnclaimable();
// In a FluentValidation validator, with the companion installed:
// RuleFor(x => x.Username).MustBeClaimable();
// Optional Extended data must be enabled explicitly:
// options.UseExtendedData();
Inspect text using built-in detectors, precise evidence and explainable risk scores suitable for reporting or moderation interfaces.
WHERE IT FITS Use it to review user-submitted text and show why a piece of content was flagged.
LIVE PLAYGROUNDREAL PACKAGE ENGINE
var inspector = TextInspectorEngine.Create();
var report = inspector.CreateReport("Contact us at hello@example.com.");
Console.WriteLine(report.RiskAssessment.TotalRiskPoints);
Run the demo to see its result.
Developer integration & companion packages
The ASP.NET Core companion registers the inspection services. The highlight demo uses exact original-source offsets; masking and disabled rules are executed by the engine.
builder.Services.AddTextInspector(options =>
options.EnableMasking = true);
// Inject ITextInspectorService for application reports.
// Inspect with IncludeHighlightSpans and IncludeSourceLocations.
The catalog converter supports every unit registered in the installed version. The dynamic converter accepts names and aliases, while the expression mode handles compatible composites. Typed quantities, exact-decimal conversion, analyzers and JSON integration are compile-time examples.
Apply automatic, default-deny route permission policies to ASP.NET Core Razor Pages.
WHERE IT FITS Use it when every Razor Pages route should require an explicit authorization decision.
LIVE PLAYGROUNDSIMULATOR
Choose a role and a route to explore default-deny authorization. This is a safe simulation; it never changes real access permissions.
// Illustrative rules:
// /Account/Login allows anonymous visitors
// /Staff/* allows Staff and Admin
// /Admin/* allows Admin
// Everything else is denied by default
Run the demo to see its result.
Developer integration & companion packages
AutoPolicy integrates into the host ASP.NET Core authorization pipeline. The interactive example is a simulator only; no website permissions are modified.
builder.Services.AddAutoPolicy(options =>
{
options.AllowAnonymous("/Account/Login", "/Error");
options.DefineGroup("StaffPages", g => g.Include("/Staff/*"));
options.DefineRole("Staff", r => r.IncludeGroup("StaffPages"));
});
// Matching denies take precedence over grants;
// undiscovered/unregistered permissions fail closed.