WebApi的調用-3.Basic驗證

Basic基本驗證

webapi里的特性

/// <summary>///  Basic驗證   /// </summary>/// <remarks>///     /// </remarks>public class BasicAuthorizeAttibute : AuthorizeAttribute{public override void OnAuthorization(HttpActionContext actionContext){var authorization = actionContext.Request.Headers.Authorization; //HTTP標頭的Authorization值//ActionDescriptor方法上,ActionDescriptor.ControllerDescriptor 類上//有[AllowAnonymousAttribute] 的情況下if (actionContext.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>(true).Count != 0|| actionContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes<AllowAnonymousAttribute>(true).Count != 0){base.OnAuthorization(actionContext);}else if (authorization != null && authorization.Parameter != null){//用戶邏輯驗證if (ValidateTicket(authorization.Parameter)){base.IsAuthorized(actionContext);}else{this.HandleUnauthorizedRequest(actionContext);}}else{this.HandleUnauthorizedRequest(actionContext);}}/// <summary>///  驗證用戶邏輯   /// </summary>/// <param name="encryptTicket" type="string">/// /// </param>/// private bool ValidateTicket(string encryptTicket){// var strTicket = FormsAuthentication.Decrypt(encryptTicket.Remove(encryptTicket.Length - 1).Remove(0, 1));var strTicket = FormsAuthentication.Decrypt(encryptTicket);return string.Equals(strTicket.UserData, string.Format("{0}&{1}", "admin", "123"));}}

獲取ticket

        [AllowAnonymous][HttpGet]public HttpResponseMessage Login(string account, string password){Model.User user = new User();if (account == "admin" && password == "123"){FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(0, account, DateTime.Now,DateTime.Now.AddHours(1), true, string.Format("{0}&{1}", account, password),FormsAuthentication.FormsCookiePath);return Success(user = new User() { name = account, pass = password, ticket = FormsAuthentication.Encrypt(ticket) });}else{return Msg("登錄失敗");}}

MVC里面請求頭(后臺請求)

public string GetApi(string method, string queryString){var result = ApiHelper.Instance.RequestApi(method, queryString, GetApiHeader());return result;}private WebHeaderCollection GetApiHeader(){string key = string.Format(GlobalVar.UserTiketCacheKey);var result = CacheHelper.CacheReader(key);WebHeaderCollection header = new WebHeaderCollection();header.Add(HttpRequestHeader.Authorization, "BasicAuth " + result);return header;}

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

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

相關文章

ats 字符集問題

2019獨角獸企業重金招聘Python工程師標準>>> 架構很簡單&#xff0c;nginx->ats->nginx 后端nginx有做內容替換&#xff0c;字符編碼為gb2312&#xff0c;因為ats為utf8編碼導致前端內容展示時進行了錯誤的替換&#xff0c;導致內容錯亂。 如 治療鼻竇炎---&g…

《零基礎看得懂的C語言入門教程 》——(十三)socket服務端編寫

一、學習目標 了解C語言的socket的概念了解C語言socket的使用方法完成C語言socket服務端 目錄 C語言真的很難嗎&#xff1f;那是你沒看這張圖&#xff0c;化整為零輕松學習C語言。 第一篇&#xff1a;&#xff08;一&#xff09;脫離學習誤區 第二篇&#xff1a;&#xff0…

129. Sum Root to Leaf Numbers

/** 129. Sum Root to Leaf Numbers * 2016-5-21 By Mingyang* dfs包含三種&#xff0c;這里是dfs的preorder方法&#xff0c;先解決根再是左右*/public int sumNumbers(TreeNode root) {return dfs(root, 0);}public int dfs(TreeNode root, int levelBase) {if (root null)r…

Android之Unexpected error while executing: am start -n “***.Activity“-a android.intent.action.MAIN

1 問題 編譯項目的時候&#xff0c;as錯誤提示如下 $ adb shell am start -n "package/package.***Activity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER Unexpected error while executing: am start -n "package/package.***Activ…

古董來了:1999年的物件,香港已經回歸了,我都上初中了,那么你出生了嗎?

受疫情的影響&#xff0c;哪都去不了&#xff0c;只能在家憋著&#xff08;為社會做貢獻&#xff09;這種狀態已經持續了將近兩個月了。無聊至極的我&#xff0c;一天無所事事&#xff0c;只能是在家這兒瞅瞅&#xff0c;那兒看看&#xff0c;用一句詩經里面的話來形容我最合適…

.NET性能優化-為結構體數組使用StructLinq

前言本系列的主要目的是告訴大家在遇到性能問題時&#xff0c;有哪些方案可以去優化&#xff1b;并不是要求大家一開始就使用這些方案來提升性能。在之前幾篇文章中&#xff0c;有很多網友就有一些非此即彼的觀念&#xff0c;在實際中&#xff0c;處處都是開發效率和性能之間取…

Android Studio之提示Unable to delete directory ‘*****\MyApplication\app\build‘

1 問題 運行android studio 無論clean project還是rebuild project,提示如下 Unable to delete directory *****\MyApplication\app\buildFailed to delete some children. This might happen because a process has files open or has its working directory set in the tar…

《假如編程是魔法之零基礎看得懂的Python入門教程 》——(七)我把魔法變成了積木

學習目標 了解魔法積木的使用——自定義函數了解魔法積木的結果反饋——自定義函數返回值了解魔法積木的原料傳遞——自定義函數傳參了解魔法積木的類型分類——類與對象 推薦 1.《備受好評的看得懂的C語言入門教程》 目錄 第一篇&#xff1a;《假如編程是魔法之零基礎看得…

關于Activity的getReferrer():如何在Activity中獲取調用者?

http://blog.csdn.net/u013553529/article/details/53856800 關于Activity的getReferrer()之一&#xff1a;如何在Activity中獲取調用者&#xff1f; http://blog.csdn.net/u013553529/article/details/53882440 關于Activity的getReferrer()之二&#xff1a;調用者的包名是如何…

java之七 高級類設計

static的用法 有時你希望定義一個類成員&#xff0c;使它的使用完全獨立于該類的任何對象。通常情況下&#xff0c;類成員必須通過它的類的對象訪問&#xff0c;但是可以創建這樣一個成員&#xff0c;它能夠被它自己使用&#xff0c;而不必引用特定的實例。在成員的聲明前面加上…

【遙感數字圖像處理】實驗:Erdas 軟件的認識與使用

Erdas軟件下載地址:《GISer福音來了:測繪地理信息類專業軟件版本大全匯總下載!》 1.1 簡介 ERDAS IMAGINE 是美國 ERDAS(Earth Resource Data Analysis System)公司開發的遙感圖像處理系統,它以其先進的圖像處理技術,友好、靈活的用戶界面和操作方式,面向廣闊應用領域…

import 別名_Python基礎找茬系列09--import和from-import的引用區別

一、語法區別二、兩種導包在內存上的區別一圖看懂import與from-import的區別無論是使用import隱式導包還是form-import顯示導包&#xff0c;整個模塊都會被加載到內存中例如&#xff1a;from test import b,整個模塊依舊進入內存&#xff0c;因為如果只有函數b進入內存&#xf…

Android Studio之提示Gradle sync failed: Plugin with id ‘com.novoda.bintray-release‘ not found.

1 問題 導入別人的模塊到Android Studio,錯誤提示如下 Gradle sync failed: Plugin with id com.novoda.bintray-release not found. 2 解決辦法 在project的build.gradle里面添加如下 dependencies {classpath com.android.tools.build:gradle:3.5.2//加上下面的代碼classp…

設計一個限速器

限速器 (Rate Limiter) 相信大家都不會陌生&#xff0c;在網絡系統中&#xff0c;限速器可以控制客戶端發送流量的速度&#xff0c;比如 TCP, QUIC 等協議。而在 HTTP 的世界中&#xff0c; 限速器可以限制客戶端在一段時間內發送請求的次數&#xff0c;如果超過設定的閾值&…

C語言新手的100個報錯解法 已更新11個錯誤

學習目標 收藏文章報錯可以過來查 [更新數據] 此文將會持續更新&#xff0c;收錄錯誤信息&#xff0c;若本文沒有收錄記得聯系我~ CSDN 1_bit 持續更新中… [發布日期&#xff1a;2020年11月16日 14:55:00] 更新&#xff1a; 暫無 C語言教程 C語言真的很難嗎&#xff1f;那…

【遙感數字圖像處理】實驗:遙感圖像顯示與數據輸入/輸出(Erdas版)

一、實驗平臺&#xff1a;Erdas 9.1 二、實驗內容&#xff1a;視窗功能簡介、圖形和圖像顯示操作、實用菜單操作、顯示操作、AOI菜單操作、矢量和柵格菜單、數據的輸入輸出等。 三、實驗目的&#xff1a;初步了解Erdas的主要功能模塊&#xff0c;在此基礎上&#xff0c;掌握視…

在Windows Server2016中安裝SQL Server2016(轉)

在Windows Server2016中安裝SQL Server2016&#xff08;轉&#xff09; 轉自&#xff1a; http://blog.csdn.net/yenange/article/details/52980135 參考&#xff1a; SQL Server2016企業版 附全版本key - moonpure的專欄 - CSDN博客 http://blog.csdn.net/moonpure/article/d…

mysql的復雜查詢_mysql復雜查詢

所謂復雜查詢&#xff0c;指涉及多個表、具有嵌套等復雜結構的查詢。這里簡要介紹典型的幾種復雜查詢格式。一、連接查詢連接是區別關系與非關系系統的最重要的標志。通過連接運算符可以實現多個表查詢。連接查詢主要包括內連接、外連接等。假設有Student和Grade兩個表如下&…

數據庫調優要點紀要

數據庫瓶頸一般在IO和CPU 1、少用group by, order by 2、通過索引來排序&#xff08;不要所有字段都用索引&#xff0c;因為insert、update要重構索引很耗時&#xff09; 3、避免select * 4、少用join 5、join和子查詢&#xff0c;還是用join來代替子查詢吧 6、少用or 7、用uni…

Unity3D 之UGUI 滑動條(Slider)

這里來講解下UGUI 滑動條(Slider)的用法 控件下面有三個游戲對象 Background -->背景 Fill Area --> 前景區域 Handle Slide Area --> 滑動條 Slider的屬性 其他幾個設置和其他控件都差不多&#xff0c;這里來講解幾個特有的屬性。 Direction -->方向 Whole Number…