在實際測試平常中,產品有兩種登陸方式,一種是普通登陸方式,另外一種則是Basic Auth方式登陸。兩種登陸對應着產品中不一樣的操做,對權限進行了一個劃分。html
使用Postman登陸,以下方式入參,便可正常登陸成功java
一樣的一個登陸操做,換到jmeter中實現時,倒遇到了不小的麻煩,琢磨了些時間,終究是解決了,分享出來與你們共享。apache
切換到jmeter進行登陸時,接口返回401,並報Unauthorized。401 是一個什麼概念呢:「未經受權」。有兩種可能,一是帳戶密碼不對,二是請求格式或者 JMeter 相關設置存在問題。帳號密碼確定是對的,那就是存在第二種問題了。服務器
遇到問題了,顯示本身琢磨了一番,仍是沒有解決,因此就來網絡上尋求幫助了。尋求一番下來,收穫還的確不小。網絡
解決思路:進行基本受權,須要添加值爲 Basic base64(用戶名:密碼)的 Authorization 頭信息。測試
(前置處理器 > BeanShell PreProcessor),以下所示,說明:BeanShell PreProcessor 或者 JSR223 PreProcessor 任一都可優化
import org.apache.commons.codec.binary.Base64; byte[] encodedUsernamePassword = Base64.encodeBase64("username:password".getBytes()); vars.put("base64HeaderValue",new String(encodedUsernamePassword));
以下圖所示:編碼
路徑:線程組>配置文件>HTTP 信息頭管理器spa
header name 填: Authorization
header value 填:Basic ${base64HeaderValue} (第二步建立的變量)線程
以下圖所示:
輸入獲取token的接口,以下:
當建立 http 請求時,Authorization 將以 base64 編碼的字符串傳遞給服務器,成功發送請求後,在 Request Headers 中就能夠看到 Authorization 的信息。
自 JMeter 3.2 之後,就不須要上述的方法了,有了更優化的解決方案,那就是解決辦法2。
(配置元件 > HTTP 受權管理器)
說明:它提供了自動將相關 Authorization
信息添加到 HTTP 請求 header 的功能。
基本 URL:http://XXXXXXXX
用戶名:user
密碼:passwd
將 域 和 Realm 保留爲空
Mechanism:BASIC_DIGEST
以下所示:
輸入獲取token的接口,以下:
Jmeter實現Basic Auth方式登陸,使用上述兩個辦法能夠完美解決,但願對有疑惑的人有所幫助。我的仍是喜歡第二種方式,第二種相對簡單一些。
本文僅表明做者觀點,系做者@溫一壺清酒發表。
歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。
文章出處:http://www.cnblogs.com/hong-fithing/
原文出處:https://www.cnblogs.com/hong-fithing/p/10792485.html