![](/img/trans.png)
[英]How should i secure my Web Application(ASP.Net Core 3.1 MVC)?
[英]How do I save logs to database in asp.net core 3.1 mvc web application?
我有中間件,我想用它來記錄哪個用戶訪問了哪個頁面以及他們得到了什么響應
public class RequestResponseLoggingMiddleware
{
private readonly RequestDelegate _next;
public RequestResponseLoggingMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
var request = await FormatRequest(context.Request);
var originalBodyStream = context.Response.Body;
using (var responseBody = new MemoryStream())
{
context.Response.Body = responseBody;
await _next(context);
var response = await FormatResponse(context.Response);
//TODO: Save log to chosen datastore
await responseBody.CopyToAsync(originalBodyStream);
}
}
private async Task<string> FormatRequest(HttpRequest request)
{
var body = request.Body;
request.EnableBuffering();
var buffer = new byte[Convert.ToInt32(request.ContentLength)];
await request.Body.ReadAsync(buffer, 0, buffer.Length);
var bodyAsText = Encoding.UTF8.GetString(buffer);
request.Body = body;
return $"{request.Scheme} {request.Host}{request.Path} {request.QueryString} {bodyAsText}";
}
private async Task<string> FormatResponse(HttpResponse response)
{
response.Body.Seek(0, SeekOrigin.Begin);
return $"{response.StatusCode}";
}
如何將 (UserId; Username; URL; TimeStamp; StatusCode) 等數據保存到我的數據庫中? 提前致謝。
實際上你想使用序列化。 所以你必須看看Newton.Json nuget package。
Log log= new Log
{
Email = "james@example.com",
Active = true,
CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc),
Roles = new List<string>
{
"User",
"Admin"
}
};
string json = JsonConvert.SerializeObject(log, Formatting.Indented);
將 json 作為列保存到 db 中。就是這樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.