Today, I worked on implementing ๐ฐ๐๐๐๐ผ๐บ ๐บ๐ถ๐ฑ๐ฑ๐น๐ฒ๐๐ฎ๐ฟ๐ฒ in my ASP.NET Core project to improve security, error tracking, and request logging.
๐ช๐ต๐ฎ๐ ๐ถ๐ ๐๐๐๐๐ผ๐บ ๐ ๐ถ๐ฑ๐ฑ๐น๐ฒ๐๐ฎ๐ฟ๐ฒ?
Custom middleware is user-defined logic that sits in the HTTP request pipeline. It allows developers to handle cross-cutting concerns such as logging, error handling, and access control.
๐ช๐ต๐ ๐๐๐ฒ ๐๐๐๐๐ผ๐บ ๐ ๐ถ๐ฑ๐ฑ๐น๐ฒ๐๐ฎ๐ฟ๐ฒ?
- Centralized error handling
- Security policy enforcement (e.g., IP filtering)
- Request/response logging
- Cleaner, modular architecture
๐น ๐ฃ๐ฟ๐ฎ๐ฐ๐๐ถ๐ฐ๐ฎ๐น ๐๐ ๐ฎ๐บ๐ฝ๐น๐ฒ๐ ๐ ๐๐บ๐ฝ๐น๐ฒ๐บ๐ฒ๐ป๐๐ฒ๐ฑ:
- ๐๐ฃ ๐ฅ๐ฒ๐๐๐ฟ๐ถ๐ฐ๐๐ถ๐ผ๐ป ๐ ๐ถ๐ฑ๐ฑ๐น๐ฒ๐๐ฎ๐ฟ๐ฒ (๐ฅ๐ฒ๐๐๐ฟ๐ถ๐ฐ๐ ๐ฎ๐ฐ๐ฐ๐ฒ๐๐ ๐๐ผ ๐ถ๐ป๐๐ฟ๐ฎ๐ป๐ฒ๐ ๐๐๐ฒ๐ฟ๐):
if (!context.Connection.RemoteIpAddress.ToString().StartsWith("192.168"))
{
context.Response.Redirect("/Account/AccessDenied");
return;
}
๐ฎ. ๐๐ฟ๐ฟ๐ผ๐ฟ ๐๐ฎ๐ป๐ฑ๐น๐ถ๐ป๐ด ๐ ๐ถ๐ฑ๐ฑ๐น๐ฒ๐๐ฎ๐ฟ๐ฒ:
try
{
await _next(context);
}
catch (Exception ex)
{
// redirect to error page
context.Response.Redirect("/Home/Error");
}
๐ฏ. ๐ฅ๐ฒ๐พ๐๐ฒ๐๐ ๐๐ผ๐ด๐ด๐ถ๐ป๐ด ๐ ๐ถ๐ฑ๐ฑ๐น๐ฒ๐๐ฎ๐ฟ๐ฒ:
Console.WriteLine($"Request: {context.Request.Method} {context.Request.Path}");
await _next(context);
These middleware components now keep my project cleaner and maintain better separation of concerns.
๐๐ฎ๐๐ฒ ๐๐ผ๐ ๐๐๐ฒ๐ฑ ๐ฐ๐๐๐๐ผ๐บ ๐บ๐ถ๐ฑ๐ฑ๐น๐ฒ๐๐ฎ๐ฟ๐ฒ ๐๐ผ ๐ฒ๐ป๐ณ๐ผ๐ฟ๐ฐ๐ฒ ๐ฏ๐๐๐ถ๐ป๐ฒ๐๐ ๐ฟ๐๐น๐ฒ๐ ๐ผ๐ฟ ๐ถ๐บ๐ฝ๐ฟ๐ผ๐๐ฒ ๐ฑ๐ถ๐ฎ๐ด๐ป๐ผ๐๐๐ถ๐ฐ๐ ๐ถ๐ป ๐๐ผ๐๐ฟ ๐๐ฆ๐ฃ.๐ก๐๐ง ๐๐ผ๐ฟ๐ฒ ๐ฎ๐ฝ๐ฝ๐น๐ถ๐ฐ๐ฎ๐๐ถ๐ผ๐ป๐? ๐๐ผ๐ ๐ฎ๐ฟ๐ฒ ๐๐ผ๐ ๐ต๐ฎ๐ป๐ฑ๐น๐ถ๐ป๐ด ๐ฐ๐ผ๐ป๐ฐ๐ฒ๐ฟ๐ป๐ ๐น๐ถ๐ธ๐ฒ ๐๐ฃ ๐ณ๐ถ๐น๐๐ฒ๐ฟ๐ถ๐ป๐ด ๐ผ๐ฟ ๐ฐ๐ฒ๐ป๐๐ฟ๐ฎ๐น๐ถ๐๐ฒ๐ฑ ๐น๐ผ๐ด๐ด๐ถ๐ป๐ด?
Top comments (0)