AuthKit 8.6.4

dotnet add package AuthKit --version 8.6.4
                    
NuGet\Install-Package AuthKit -Version 8.6.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AuthKit" Version="8.6.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AuthKit" Version="8.6.4" />
                    
Directory.Packages.props
<PackageReference Include="AuthKit" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AuthKit --version 8.6.4
                    
#r "nuget: AuthKit, 8.6.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AuthKit@8.6.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AuthKit&version=8.6.4
                    
Install as a Cake Addin
#tool nuget:?package=AuthKit&version=8.6.4
                    
Install as a Cake Tool

AuthKit

Библиотека аутентификации и управления пользователями для WinForms-приложений с Entity Framework Core. Включает регистрацию, авторизацию, управление ролями, проверку надёжности паролей, блокировку/разблокировку учётных записей и готовый диалог входа.

Установка

dotnet add package AuthKit

Или через NuGet Package Manager:

Install-Package AuthKit

Пространство имён

using AuthKit;

Модель данных

AppUser

Модель пользователя системы. Используется с Entity Framework Core. DbContext должен содержать DbSet<AppUser>.

public class AppUser
{
    [Key]
    public int Id { get; set; }
    public string Login { get; set; }
    public string PasswordHash { get; set; }
    public string FullName { get; set; }
    public string Role { get; set; }         // "Admin", "Operator", "Guest"
    public bool IsActive { get; set; }
    public DateTime CreatedDate { get; set; }
}
Свойство Тип Описание
Id int Уникальный идентификатор (первичный ключ)
Login string Логин пользователя
PasswordHash string Хеш пароля (SHA256 с солью)
FullName string Полное имя пользователя
Role string Роль: Admin, Operator или Guest
IsActive bool Признак активности учётной записи
CreatedDate DateTime Дата создания учётной записи

Полный справочник API — AuthService

Все методы находятся в статическом классе AuthService.

AuthService.Register

Регистрирует нового пользователя. Выбрасывает InvalidOperationException, если логин уже занят.

AppUser Register(DbContext dbContext, string login, string password, string fullName, string role)
Параметр Тип Описание
dbContext DbContext Контекст базы данных
login string Логин
password string Пароль (будет захеширован)
fullName string Полное имя
role string Роль пользователя

Возвращает: AppUser — созданный пользователь.


AuthService.Login

Авторизация пользователя по логину и паролю. Проверяет только активных пользователей (IsActive = true).

AppUser? Login(DbContext dbContext, string login, string password)
Параметр Тип Описание
dbContext DbContext Контекст базы данных
login string Логин
password string Пароль

Возвращает: AppUser? — пользователь или null при неудачной авторизации.


AuthService.IsAdmin

Проверяет, является ли пользователь администратором (без учёта регистра).

bool IsAdmin(AppUser user)
Параметр Тип Описание
user AppUser Пользователь

Возвращает: booltrue, если роль пользователя "Admin".


AuthService.HasRole

Проверяет, имеет ли пользователь указанную роль (без учёта регистра).

bool HasRole(AppUser user, string role)
Параметр Тип Описание
user AppUser Пользователь
role string Роль для проверки

Возвращает: booltrue, если роль совпадает.


AuthService.ChangePassword

Смена пароля пользователя.

void ChangePassword(DbContext dbContext, AppUser user, string newPassword)
Параметр Тип Описание
dbContext DbContext Контекст базы данных
user AppUser Пользователь
newPassword string Новый пароль

AuthService.ValidatePasswordStrength

Оценивает надёжность пароля. Критерии: длина >= 6, длина >= 10, наличие прописных букв, строчных букв, цифр, спецсимволов. Каждый критерий даёт 1 балл.

string ValidatePasswordStrength(string password)
Параметр Тип Описание
password string Пароль для проверки

Возвращает: string — уровень надёжности:

  • 5-6 баллов: "Сильный"
  • 3-4 балла: "Средний"
  • 0-2 балла: "Слабый"

AuthService.Deactivate

Деактивирует (блокирует) учётную запись пользователя. Заблокированный пользователь не сможет войти в систему.

void Deactivate(DbContext dbContext, AppUser user)
Параметр Тип Описание
dbContext DbContext Контекст базы данных
user AppUser Пользователь для блокировки

AuthService.Activate

Активирует (разблокирует) учётную запись пользователя.

void Activate(DbContext dbContext, AppUser user)
Параметр Тип Описание
dbContext DbContext Контекст базы данных
user AppUser Пользователь для разблокировки

AuthService.GetAll

Возвращает список всех пользователей, отсортированных по логину.

List<AppUser> GetAll(DbContext dbContext)
Параметр Тип Описание
dbContext DbContext Контекст базы данных

Возвращает: List<AppUser> — все пользователи.


AuthService.GetByRole

Возвращает пользователей с указанной ролью, отсортированных по логину.

List<AppUser> GetByRole(DbContext dbContext, string role)
Параметр Тип Описание
dbContext DbContext Контекст базы данных
role string Роль для фильтрации

Возвращает: List<AppUser> — пользователи с указанной ролью.


AuthService.HashPassword

Хеширует пароль с использованием SHA256 и соли.

string HashPassword(string password)
Параметр Тип Описание
password string Пароль

Возвращает: string — хеш пароля в виде шестнадцатеричной строки (нижний регистр).


AuthService.VerifyPassword

Проверяет пароль по хешу.

bool VerifyPassword(string password, string hash)
Параметр Тип Описание
password string Пароль для проверки
hash string Хеш для сравнения

Возвращает: booltrue, если пароль совпадает с хешем.


Справочник API — LoginDialog

Статический класс LoginDialog предоставляет готовый WinForms-диалог авторизации с возможностью регистрации нового пользователя.

LoginDialog.Show

Показывает диалоговое окно авторизации. Включает поля логина и пароля, кнопку входа, кнопку отмены и кнопку регистрации нового пользователя. При регистрации пользователю назначается роль "Guest".

AppUser? Show(DbContext dbContext, string title = "Авторизация")
Параметр Тип Описание
dbContext DbContext Контекст базы данных
title string Заголовок окна (по умолчанию "Авторизация")

Возвращает: AppUser? — авторизованный пользователь или null при отмене.


Примеры использования

Пример 1. Авторизация при запуске приложения с разграничением ролей

using AuthKit;

var user = LoginDialog.Show(dbContext);
if (user == null)
{
    MessageBox.Show("Авторизация отменена.");
    Application.Exit();
    return;
}

Text = $"Система — {user.FullName} ({user.Role})";

if (AuthService.IsAdmin(user))
{
    menuAdmin.Visible = true;
    btnDelete.Enabled = true;
}
else if (AuthService.HasRole(user, "Operator"))
{
    menuAdmin.Visible = false;
    btnDelete.Enabled = false;
}
else
{
    // Гость — только просмотр
    dataGridView1.ReadOnly = true;
}

Пример 2. Управление пользователями (администрирование)

using AuthKit;

// Регистрация пользователей
var admin = AuthService.Register(db, "admin", "P@ssw0rd!", "Администратор", "Admin");
var oper = AuthService.Register(db, "operator1", "Op3r@tor", "Иванов И.И.", "Operator");

// Получение всех пользователей
var allUsers = AuthService.GetAll(db);
dataGridView.DataSource = allUsers;

// Получение операторов
var operators = AuthService.GetByRole(db, "Operator");

// Блокировка пользователя
AuthService.Deactivate(db, oper);
// Заблокированный пользователь не сможет войти через Login()

// Разблокировка
AuthService.Activate(db, oper);

Пример 3. Смена пароля с проверкой надёжности

using AuthKit;

string newPassword = "MyStr0ng!Pass";
string strength = AuthService.ValidatePasswordStrength(newPassword);

if (strength == "Слабый")
{
    MessageBox.Show("Пароль слишком слабый. Используйте буквы, цифры и спецсимволы.");
    return;
}

AuthService.ChangePassword(db, currentUser, newPassword);
MessageBox.Show($"Пароль изменён. Надёжность: {strength}");

// Проверка: "12345" -> "Слабый", "Abc123" -> "Средний", "P@ssw0rd!X" -> "Сильный"

Безопасность

Пароли хешируются с помощью SHA256 с солью и никогда не хранятся в открытом виде. При авторизации введённый пароль хешируется и сравнивается с сохранённым хешем в базе данных. Деактивированные пользователи не могут пройти авторизацию.

Требования

  • .NET 8.0
  • Entity Framework Core
  • Windows Forms (для LoginDialog)

Лицензия

MIT

Product Compatible and additional computed target framework versions.
.NET net8.0-windows7.0 is compatible.  net9.0-windows was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on AuthKit:

Package Downloads
ISBuilder

Information System Builder — full toolkit for building .NET 8 WinForms applications with EF Core, SQL Server. Export, CRUD, forms, charts, auth, reports, validation, themes.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
8.6.4 91 4/12/2026
8.6.0 65 4/12/2026