AuthKit 8.6.4
dotnet add package AuthKit --version 8.6.4
NuGet\Install-Package AuthKit -Version 8.6.4
<PackageReference Include="AuthKit" Version="8.6.4" />
<PackageVersion Include="AuthKit" Version="8.6.4" />
<PackageReference Include="AuthKit" />
paket add AuthKit --version 8.6.4
#r "nuget: AuthKit, 8.6.4"
#:package AuthKit@8.6.4
#addin nuget:?package=AuthKit&version=8.6.4
#tool nuget:?package=AuthKit&version=8.6.4
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 |
Пользователь |
Возвращает: bool — true, если роль пользователя "Admin".
AuthService.HasRole
Проверяет, имеет ли пользователь указанную роль (без учёта регистра).
bool HasRole(AppUser user, string role)
| Параметр | Тип | Описание |
|---|---|---|
user |
AppUser |
Пользователь |
role |
string |
Роль для проверки |
Возвращает: bool — true, если роль совпадает.
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 |
Хеш для сравнения |
Возвращает: bool — true, если пароль совпадает с хешем.
Справочник 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 | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0-windows7.0 is compatible. net9.0-windows was computed. net10.0-windows was computed. |
-
net8.0-windows7.0
- Microsoft.EntityFrameworkCore (>= 8.0.25)
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.