1前言 爬蟲一般都是用Python來寫,生態豐富,動態語言開發速度快,調試也很方便 但是 我要說但是,動態語言也有其局限性,筆者作為老爬蟲帶師,幾乎各種語言都搞過,現在這個任務並不複雜,用我最喜歡的C#做小菜一碟~ 2開始 之前做 OneCat 項目的時候,最開始的數據採集模塊,就是用 C# 做的, ...
學習ASP.NET Core Blazor編程系列文章之目錄 學習ASP.NET Core Blazor編程系列一——綜述 學習ASP.NET Core Blazor編程系列二——第一個Blazor應用程式(上)
學習ASP.NET Core Blazor編程系列三——實體 學習ASP.NET Core Blazor編程系列五——列表頁面 學習ASP.NET Core Blazor編程系列七——新增圖書 學習ASP.NET Core Blazor編程系列八——數據校驗 學習ASP.NET Core Blazor編程系列十三——路由(完) 學習ASP.NET Core Blazor編程系列十五——查詢 學習ASP.NET Core Blazor編程系列十六——排序 學習ASP.NET Core Blazor編程系列二十——文件上傳(完) 學習ASP.NET Core Blazor編程系列二十一——數據刷新 學習ASP.NET Core Blazor編程系列二十二——登錄(1)
通過前面三篇文章的學習,我們雖然實現了登錄功能,但那還不是我們希望的登錄首頁。
我們希望的登錄功能,用戶在登錄圖書租賃系統的時候,如果沒有進行登錄是無法看到任何功能菜單,並且頁面一直顯示登錄頁面。
八、登錄首頁
創建RedirectToLogin組件
這個組件沒有其他任何作用,就是在未登錄時跳轉到登錄頁面。
1. 在Visual Studio 2022的解決方案資源管理器中,滑鼠左鍵選中“Pages”文件夾,右鍵單擊,在彈出菜單中選擇“添加—>Razor組件…”,並將組件命名為“RedirectToLogin.razor”。
2.在Visual Studio 2022的文本編輯器中打開RedirectToLogin.razor,我們來添加未登錄轉移到登錄頁面的代碼。具體代碼如下:
@inject NavigationManager NavigationManager
@code {
protected override void OnInitialized()
{
base.OnInitialized();
NavigationManager.NavigateTo("/Login", true);
}
}
3. 在Visual Studio 2022的文本編輯器中打開mainlayou.razor,我們修改組件中的登錄驗證相關的代碼。
在前面的文章中我們在這個組件中添加了AuthorizeView這個Blazor自帶的一個授權組件,它內部處理了授權信息,內部有NotAuthorized、Authorized和Authorizing可供使用。
NotAuthorized即未授權的情況,這種情況如果不寫,預設是顯示一行文字,Not Authorized。內部是一個RenderFragment,可以添加任何內容。
Authorizing是正在進行授權認證,此時用來顯示相應的文字,我們使用Cookie認證的話一般不會有這種情況,但是如果我們使用統一認證,或者其他網路認證的時候,可能會有等待認證的時間,這時候我們提示信息就要寫在這裡。
Authorized是用戶獲得了授權之後,在這裡可以顯示相應的內容。
我們實現的是一個未登錄就跳轉到登錄頁面的功能,所以我們就在NotAuthorized的時候載入我們的RedirectToLogin的組件即可。具體代碼如下:
@using BlazorAppDemo.Pages
@inherits LayoutComponentBase
<PageTitle>BlazorAppDemo</PageTitle>
<div class="page">
<div class="sidebar">
<NavMenu />
</div>
<main>
<AuthorizeView>
<Authorized>
<div class="top-row px-4">
<a href="https://docs.microsoft.com/aspnet/" target="_blank">About</a>
</div>
<article class="content px-4">
@Body
</article>
</Authorized>
<NotAuthorized>
<div style="margin: 120px 0; width:100%; text-align: center; color: red;">
<span style="font-size:20px">檢測到登錄超時,請重新<a href="/login" style="text-decoration:underline">登錄</a>!</span>
</div>
<RedirectToLogin></RedirectToLogin>
</NotAuthorized>
</AuthorizeView>
</main>
</div>
說明:我將前文中的提示文字保留,實際上我們並沒有看到。
- mainlayou.razor中的AuthorizeView,限制只有通過授權的用戶才能成功登錄系統。
4. 在Visual Studio 2022的菜單欄上,找到“調試-->開始調試”或是按F5鍵,Visual Studio 2022會生成BlazorAppDemo應用程式,併在瀏覽器中打開的不在是Index頁面,這時我們看到的將是Login登錄頁面。如下圖。
5.我們輸入用戶名與密碼,進行模擬登錄。頁面無法進入首頁面,永遠在登錄頁面,這是由於我們並沒有實現AuthenticationStateProvider的原因。
備註:
RedirectToLogin中的代碼NavigationManager.NavigateTo("/Login", true);方法在Debug時會報錯,在.net 6上目前沒找到什麼合適的解決辦法。這裡報錯就直接點擊繼續,不會有任何其他影響,並且Release下不會報錯。如圖: