"한 줄 코드"는 신/구 프로젝트에 대한 신원 관리 웹을 추가합니다.
- 호환성: .NET Identity 표준을 따르는 JWT, Cookie 및 Session을 기반으로 합니다.
- 즉시 사용 가능: 손쉬운 통합, MiniAuth는 API, MVC, Razer Pages와 함께 작동합니다.
- 멀티 플랫폼: 리눅스, macOS 환경을 지원합니다.
- 다중 데이터베이스 지원: Identity EF Core 표준을 따르는 모든 데이터베이스와 호환됩니다.
패키지를 설치하세요 NuGet:
dotnet add package MiniAuth
// or
NuGet\Install-Package MiniAuth
한줄의 코드를 추가해라 services.AddMiniAuth()
Startup에, 그리고나서 프로젝트를 실행해 예:
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMiniAuth();
var app = builder.Build();
app.Run();
}
}
기본 관리자 계정은 [email protected]
이며 비밀번호는 E7c4f679-f379-42bf-b547-684d456bc37f
(비밀번호 변경 remember)입니다. 관리자 페이지는 http(s)://yourhost/miniauth/index.html
에서 접속할 수 있습니다.
참고: 이미 본인 인증이 있는 경우 아래 지침을 따르시기 바랍니다.
Add MiniAuth
에 대해 autoUse를 해제하고 Use MiniAuth에서 컨텍스트, 사용자 및 사용 권한 인증으로 교체하여 자신의 인증 뒤에 배치합니다. 예:
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(connectionString));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
builder.Services.AddControllersWithViews();
builder.Services.AddMiniAuth(autoUse: false); // <= ❗❗❗
var app = builder.Build();
app.UseMiniAuth<ApplicationDbContext, IdentityUser, IdentityRole>(); // <= ❗❗❗
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.MapRazorPages();
app.Run();
}
Use MiniAuth를 라우팅 생성 후에 배치하십시오. 그렇지 않으면 시스템이 다음과 같은 권한 검사를 위한 라우팅 데이터를 얻을 수 없습니다:
app.UseRouting();
app.UseMiniAuth();
AddRoles<IdentityRole>()
; 을 추가해주세요 그렇지 않으면 [Authorize(Roles = "YourRole")]
가 작동하지 않습니다.
builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddRoles<IdentityRole>() // ❗❗❗
.AddEntityFrameworkStores<ApplicationDbContext>();
자신만의 로그인 로직, 페이지, API만 사용하고 싶다면 로그인 경로를 커스터마이징하고 스위치를 끌 수 있습니다.
// before add service
MiniAuthOptions.LoginPath = "/Identity/Account/Login";
MiniAuthOptions.DisableMiniAuthLogin = true;
MiniAuth 시스템은 기본적으로 코드 설정 없이 SQLite를 사용합니다. 전환이 필요한 경우 app.Use MiniAuth
에서 다른 데이터베이스 유형을 지정합니다.
- MiniAuth는 등록 및 암호 재설정과 같은 사용자 작업을 IT 관리자가 중앙에서 관리하는 기본 모드로 작동하므로 이러한 작업을 수행하려면 관리자 권한 계정이 필요합니다. Default Role = miniauth-admin.
ApiController가 아닌 경우 로그인은 login.html 페이지(Headers["X-Requested-With"] == "XMLHtpRequest" 또는 ApiControllerAttribute로 리디렉션됩니다. ApiController는 기본적으로 로그인 페이지로 리디렉션하지 않고 401 상태 코드를 반환합니다.
- 데이터베이스 소스를 SQL Server, MySQL, PostgreSQL 등으로 전환해주세요.
- 관리 백엔드 프론트엔드는
/src/Frontend_Identity
에서 Vue3 + Vite를 사용하며,npm run build
를 사용한 후 miniauth UI를 업데이트할 수 있습니다. - 로그인 페이지에 miniauth 기본값을 사용하지 않으려면 mvc에서 ID 스캐폴드 Login.cshtml을 사용하거나 miniauth 프론트엔드의 login.html, js, css를 변경할 수 있습니다.
업데이트 내용은 Release Notes를 참고하세요.