邏輯是相當原始的--如果一個用戶訪問頁面并且沒有cookie,顯示用戶接受/拒絕cookie,他就會被重定向到一個cookie接受頁面。當他設定了cookie后,他將被重定向到之前輸入的URL或主頁(取決于用戶輸入的URL)。
我如何在 ASP.NET Core 中實作這一點(如果有必要的話,我使用的是 .NET 6)
我的偽代碼是:
。我的偽代碼是這樣的:
我的偽代碼是這樣的:
[Route("/*"/span>)]
var result = AuthenticateCookie(document.cookie("banneracceptance", true).authenticate()) 。
if (result === true)
重定向(/Homepage || inputtedURL)。
else[/span
拋出 新錯誤("錯誤的證書")。
顯然我是C#的初學者,所以我用JavaScript的風格來寫它。
P.S. 我應該在哪個組件中寫這個邏輯?一個控制器?Startup.cs?
uj5u.com熱心網友回復:
這最好通過使用一些自定義的中間件來解決所有請求。你把它放在管道中,然后檢查cookie,如果它不在那里或不符合我們想要的值,就重定向。也許還可以對它所請求的頁面進行檢查,但管道似乎足夠聰明,不會讓你陷入重定向回圈。
public class CookieCheckMiddleware
{
private readonly RequestDelegate _next;
public CookieCheckMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext httpContext)
{
if(httpContext.Request.Cookies["MyCookie"] == null && httpContext.Request.Path != "/WhereIShouldGo")
{
httpContext.Response.Redirect("/WhereIShouldGo") 。
}
await _next(httpContext); //呼叫下一個中間件。
}
}
///用于將中間件添加到HTTP請求管道的擴展方法。
public static class CookieCheckMiddlewareExtensions
{
public static IApplicationBuilder UseCookieCheckMiddleware(this IApplicationBuilder builder)
{
return builder.UseMiddleware<CookieCheckMiddleware>()。
}
然后在你的startup.cs中
public void Configure(IApplicationBuilder app。IWebHostEnvironment env)。
{
...
app.UseCookieCheckMiddleware()。
...
}
只需注意,在你放置中間件呼叫的地方,它也會出現在請求管道中,所以請確保重要的東西在配置方法中位于它的前面,而依賴于重定向的東西則在它之后。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/324067.html
標籤:
