国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

HTTP基本認證(Basic Authentication)的JAVA實例代碼

2019-11-26 13:34:58
字體:
來源:轉載
供稿:網友

大家在登錄網站的時候,大部分時候是通過一個表單提交登錄信息。

但是有時候瀏覽器會彈出一個登錄驗證的對話框,如下圖,這就是使用HTTP基本認證。

下面來看看一看這個認證的工作過程:

第一步: 客戶端發送http request 給服務器,服務器驗證該用戶是否已經登錄驗證過了,如果沒有的話,

服務器會返回一個401 Unauthozied給客戶端,并且在Response 的 header "WWW-Authenticate" 中添加信息。

如下圖。

第三步: 服務器將Authorization header中的用戶名密碼取出,進行驗證, 如果驗證通過,將根據請求,發送資源給客戶端。

下面來看一個JAVA的示例代碼

import java.io.IOException;import java.io.PrintWriter;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import sun.misc.BASE64Decoder;public class HTTPAuthServlet extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {    String sessionAuth = (String) request.getSession().getAttribute("auth");    if (sessionAuth != null) {      System.out.println("this is next step");      nextStep(request, response);    } else {      if(!checkHeaderAuth(request, response)){        response.setStatus(401);        response.setHeader("Cache-Control", "no-store");        response.setDateHeader("Expires", 0);        response.setHeader("WWW-authenticate", "Basic Realm=/"test/"");      }          }  }  private boolean checkHeaderAuth(HttpServletRequest request, HttpServletResponse response) throws IOException {    String auth = request.getHeader("Authorization");    System.out.println("auth encoded in base64 is " + getFromBASE64(auth));        if ((auth != null) && (auth.length() > 6)) {      auth = auth.substring(6, auth.length());      String decodedAuth = getFromBASE64(auth);      System.out.println("auth decoded from base64 is " + decodedAuth);      request.getSession().setAttribute("auth", decodedAuth);      return true;    }else{      return false;    }  }  private String getFromBASE64(String s) {    if (s == null)      return null;    BASE64Decoder decoder = new BASE64Decoder();    try {      byte[] b = decoder.decodeBuffer(s);      return new String(b);    } catch (Exception e) {      return null;    }  }  public void nextStep(HttpServletRequest request, HttpServletResponse response) throws IOException {    PrintWriter pw = response.getWriter();    pw.println("<html> next step, authentication is : " + request.getSession().getAttribute("auth") + "<br>");    pw.println("<br></html>");  }  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {    doGet(request, response);  }}

當request第一次到達服務器時,服務器沒有認證的信息,服務器會返回一個401 Unauthozied給客戶端。

認證之后將認證信息放在session,以后在session有效期內就不用再認證了。

以上就是小編為大家帶來的HTTP基本認證(Basic Authentication)的JAVA實例代碼全部內容了,希望大家多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇雄县| 绥阳县| 台湾省| 扬中市| 台东市| 会泽县| 清涧县| 锦屏县| 饶平县| 永泰县| 泗水县| 松江区| 旌德县| 土默特右旗| 景德镇市| 阳春市| 宁波市| 文昌市| 梅河口市| 洪泽县| 山东| 上栗县| 南江县| 鹤岗市| 高青县| 广州市| 缙云县| 北辰区| 平山县| 峨山| 永济市| 徐州市| 陈巴尔虎旗| 施甸县| 沙坪坝区| 三明市| 共和县| 抚宁县| 山西省| 板桥市| 扬州市|