在Blazor 中自定義權限驗證

outside_default.png

Blazor是什么

Blazor 是微軟在 .NET 里推出的一個 WEB 客戶端 UI 交互的框架,

使用 Blazor 你可以代替 JavaScript 來實現自己的頁面交互邏輯,可以很大程度上進行 C# 代碼的復用,Blazor 對于 .NET 開發人員來說是一個不錯的選擇。

需求背景

其實我對著這東西是挺反感的,但是沒辦法,這個是之前別人遺留的項目,那個哥們干了2個月就走人了。我那時候正好入職,也就交接給我了。我當時的態度是代碼能正常編譯運行就好了。其他的業務對不對就交給測試人員去驗證。

之前只是實現了業務功能,但是連個權限驗證也沒有,現在要上線了,總不能裸奔吧,所以就需要加個權限驗證。

代碼實現

1、在公共部分 App.razor 加個輸入用戶名、驗證碼

<Form?Model="@_vm.Data"??????Loading="_vm.Loading"??????LabelColSpan="8"??????WrapperColSpan="16"><FormItem><Input?@bind-Value="@context.username"?/></FormItem><FormItem><Input?@bind-Value="@context.userpwd"?/></FormItem><FormItem?WrapperColSpan="24"?Style="text-align:center"><Button??HtmlType="button"?OnClick="@(?async?()?=>await?login())">登錄</Button></FormItem>
</Form>復制代碼

2、實現登錄事件OnClick="@( async () =>await login())

private?loginVm?_vm?=?new?loginVm();????public?async?Task?login(){var?result?=?_vm.Data;????????if(result.username=="xxxx"?&&??result.userpwd=="xxxxxxx"){await?JsRuntime.InvokeAsync<string>("InitialCarousel");???????????Logined?=?true;????????}else{ResetForm();????????????Logined?=?false;??????????????await?JsRuntime.InvokeAsync<string>("alerterror");????????}}private?void?ResetForm(){_vm.Data.username?=?"";????????_vm.Data.userpwd?=?"";????}public?bool?Logined;??????protected?override?async?Task?OnInitializedAsync(){await?base.OnInitializedAsync();????????????try{var?TValue?=?await?JsRuntime.InvokeAsync<string>("returnInitialCarousel");?????????????if(!string.IsNullOrWhiteSpace(TValue)){Logined?=?true;????????????}else{Logined?=?false;????????????}?????}catch?(Exception?ex){Logined?=?false;??}}
}復制代碼

3、頁面做個判斷,有權限正常顯示,沒權限顯示登錄界面

<Router?AppAssembly="@typeof(Program).Assembly"><Found?Context="routeData">@if(Logined){<RouteView?RouteData="@routeData"?DefaultLayout="@typeof(BasicLayout)"?/>}else{<LayoutView?Layout="@typeof(BasicLayout)">
<Form?Model="@_vm.Data"??????Loading="_vm.Loading"??????LabelColSpan="8"??????WrapperColSpan="16"><FormItem><Input?@bind-Value="@context.username"?/></FormItem><FormItem><Input?@bind-Value="@context.userpwd"?/></FormItem><FormItem?WrapperColSpan="24"?Style="text-align:center"><Button??HtmlType="button"?OnClick="@(?async?()?=>await?login())">μ???</Button></FormItem>
</Form></LayoutView>}??????</Found><NotFound><LayoutView?Layout="@typeof(BasicLayout)"><p>Sorry,?there's?nothing?at?this?address.</p></LayoutView></NotFound>
</Router><AntContainer?/>復制代碼

4、這里我是用cookies做判斷,登錄的時候寫入cookies,直接調用js方法實現

<script>function?alerterror()?{console.log(333);?????????alert("賬號或密碼錯誤");?????}function?InitialCarousel()?{console.log(222);????????????document.cookie?=?"username=John?Doe;?path=/";????????}function?returnInitialCarousel()?{console.log(111);????????????var?cname?=?"username";????????????var?name?=?cname?+?"=";????????????var?ca?=?document.cookie.split(';');????????????for?(var?i?=?0;?i?<?ca.length;?i++)?{????????????????var?c?=?ca[i].trim();????????????????if?(c.indexOf(name)?==?0)?return?c.substring(name.length,?c.length);????????????}return?"";????????}</script>復制代碼

效果

outside_default.png

outside_default.png

outside_default.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284407.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284407.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284407.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

看出每個應用程序最高可用內存是多少

int maxMemory (int) (Runtime.getRuntime().maxMemory() / 1024); Log.d("TAG", "Max memory is " maxMemory "KB"); 轉載于:https://www.cnblogs.com/coderwjq/p/6501639.html

中文分詞之HMM模型詳解

文章轉載自: http://yanyiwu.com/work/2014/04/07/hmm-segment-xiangjie.html HMM(Hidden Markov Model): 隱式馬爾科夫模型。 HMM模型可以應用在很多領域&#xff0c;所以它的模型參數描述一般都比較抽象&#xff0c;以下篇幅針對HMM的模型參數介紹直接使用它在中文分詞中的實…

【ArcGIS微課1000例】0035:地圖面狀符號設計教程

地圖符號是表示地圖內容的基本手段,它由形狀不同、大小不一、色彩有別的圖形和文字組成。 地圖符號是地圖的語言,是一種圖形語言。它與文字語言相比較,最大的特點是形象直觀,一目了然。 本文講解ArcGIS中面狀符號設計方法。 文章目錄 一、新建符號樣式二、面狀符號設計1. 斜…

MySQL奪命15問,你能堅持到第幾問?

前言 MySQL在面試中經常被問到&#xff0c;本文總結了面試中的經典問題。 1. 數據庫三大范式是什么&#xff1f; 第一范式&#xff1a;每個列都不可以再拆分。 第二范式&#xff1a;在第一范式的基礎上&#xff0c;非主鍵列完全依賴于主鍵&#xff0c;而不能是依賴于主鍵的一部…

ios元素定位

原文地址http://www.cnblogs.com/meitian/p/7373460.html 第一種&#xff1a;通過Appium1.6的Inspector來查看 具體安裝方式前面的隨筆已經介紹了&#xff1a;http://www.cnblogs.com/meitian/p/7360017.html可以通過定位找到元素xpath或name個人不推薦用這個方法&#xff0c;實…

分治法——循環賽日程表

1、問題描述&#xff1a;有n2^k個遠動員選手&#xff0c;設計比賽日程表實現&#xff1a;&#xff08;1&#xff09;每個選手必須與n-1個選手比賽&#xff08;2&#xff09;每個選手一天只比賽一場&#xff08;3&#xff09;比賽共進行n-1天輸入&#xff1a;n人輸出&#xff1a…

使用 LSM-Tree 思想基于.NET 6.0 C# 寫個 KV 數據庫(案例版)

文章有點長&#xff0c;耐心看完應該可以懂實際原理到底是啥子。這是一個KV數據庫的C#實現&#xff0c;目前用.NET 6.0實現的&#xff0c;目前算是屬于雛形&#xff0c;骨架都已經完備&#xff0c;畢竟剛完工不到一星期。當然&#xff0c;這個其實也算是NoSQL的雛形&#xff0c…

35.使用攔截器實現權限驗證

轉自&#xff1a;https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 為了說明此問題&#xff0c;我們建立struts2auth項目&#xff0c;流程圖如下&#xff1a; 簡短說明&#xff1a;當我們訪問main.jsp頁面&#xff0c;并試圖通過此頁面中的鏈接地址&#xff1a;not…

如何保證緩存和數據庫的一致性?

1. 問題分析 2. Cache-Aside 2.1 讀緩存 2.2 寫緩存 2.3 延遲雙刪 2.4 如何確保原子性 3. Read-Through/Write-Through 3.1 Read-Through 3.2 Write-Through 4. Write Behind 很多小伙伴在面試的時候&#xff0c;應該都遇到過類似的問題&#xff0c;如何確保緩存和數據庫…

Pressed狀態和clickable,duplicateParentState的關系

做Android開發的人都用過Selector,可以方便的實現View在不同狀態下的背景。不過&#xff0c;相信大部分開發者遇到過和我一樣的問題&#xff0c;本文會從源碼角度&#xff0c;解釋這些問題。 首先&#xff0c;這里簡單描述一下&#xff0c;我遇到的問題&#xff1a; 界面上有個…

Hbase筆記4 java操作Hbase

暫無轉載于:https://www.cnblogs.com/mrxiaohe/p/6512481.html

【招聘(南京)】 慧咨環球南京研發中心 .NET和Blazor 前端

主要的亮點快速增長的、產品導向型的全球性科技公司設計和開發市場領先的軟件解決方案WLB — 工作生活相平衡澳洲排名前五的軟件公司混合辦公 — 3天在家辦公&#xff0c;2天在辦公室辦公在C#和.NET開發&#xff0c;企業級系統研發&#xff0c;軟件工程方面有長期的優秀實踐和技…

用Python+Django在Eclipse環境下開發web網站【轉】

一、創建一個項目如果這是你第一次使用Django&#xff0c;那么你必須進行一些初始設置。也就是通過自動生成代碼來建立一個Django項目--一個Django項目的設置集&#xff0c;包含了數據庫配置、Django詳細選項設置和應用 特性配置&#xff0c;具體操作步驟如下所示。 1.新建Djan…

[轉]數據結構KMP算法配圖詳解(超詳細)

KMP算法配圖詳解 前言 KMP算法是我們數據結構串中最難也是最重要的算法。難是因為KMP算法的代碼很優美簡潔干練&#xff0c;但里面包含著非常深的思維。真正理解代碼的人可以說對KMP算法的了解已經相當深入了。而且這個算法的不少東西的確不容易講懂&#xff0c;很多正規的書本…

BGP-MED-2

BGP-MED-2如圖&#xff1a;當AS100去往AS300的60、10的網絡時&#xff0c;60走R3&#xff0c;10走R1!使用MED屬性影響選路&#xff01; R2的配置 bgp 200peer 1.1.1.1 as-number 100 peer 1.1.1.1 ebgp-max-hop 255 peer 1.1.1.1 connect-interface LoopBack0peer 4.4.4.4 as-n…

WPF 實現 Gitee 氣泡菜單(一)

WPF 實現 Gitee 氣泡菜單&#xff08;一&#xff09;氣泡菜單&#xff08;一&#xff09;作者&#xff1a;WPFDevelopersOrg原文鏈接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40&#xff1b;Visual Studio 2022;項目使用 MIT 開…

[轉]LVS負載均衡(LVS簡介、三種工作模式、十種調度算法)

一、LVS簡介 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虛擬服務器&#xff0c;是由章文嵩博士主導的開源負載均衡項目&#xff0c;目前LVS已經被集成到Linux內核模塊中。該項目在Linux內核中實現了基于IP的數據請求負載均衡調度方案&#xff0c;其體系結構如圖1…

一張圖看懂微軟Power BI系列組件

一、Power BI簡介 Power BI是微軟最新的商業智能&#xff08;BI&#xff09;概念&#xff0c;它包含了一系列的組件和工具。話不多說&#xff0c;直接上圖吧&#xff1a; Power BI的核心理念就是讓我們用戶不需要強大的技術背景&#xff0c;只需要掌握Excel這樣簡單的工具就能快…

互聯網項目總結

2019獨角獸企業重金招聘Python工程師標準>>> 從去年年底開始專門被分配到互聯網小組做項目&#xff0c;一直想做個總結&#xff0c;但是苦于太貪玩。好吧&#xff0c;借著小組技術交流來一發。這里只對自己新學習的技術或者一些小技巧做簡要概述&#xff0c;不做深究…

【ArcGIS微課1000例】0036:分式標注案例教程

【拓展閱讀】:【ArcGIS Pro微課1000例】0015:ArcGIS Pro中屬性字段分式標注案例教程 文章目錄 1. 符號化2. 分式標注1. 符號化 右鍵數據圖層→符號系統,打開符號系統對話框,住符號系統選擇【唯一值】,字段1選擇NAME。 唯一值標注效果: 2. 分式標注 雙擊打開圖層屬性,切…