自建的电子网站如何做推广,网站开发时图片加载慢怎么解决,网站正在维护中html,wordpress微信大家在登录网站的时候#xff0c;大部分时候是通过一个表单提交登录信息。但是有时候浏览器会弹出一个登录验证的对话框#xff0c;如下图#xff0c;这就是使用HTTP基本认证。下面来看看一看这个认证的工作过程:第一步:客户端发送http request 给服务器,服务器验证该用户是…大家在登录网站的时候大部分时候是通过一个表单提交登录信息。但是有时候浏览器会弹出一个登录验证的对话框如下图这就是使用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 classHTTPAuthServlet extends HttpServlet {public voiddoGet(HttpServletRequest request, HttpServletResponse response) throws IOException {if (!BasicAuthenticationUtil.checkUserAuth(request, basicAuth)) {if (!BasicAuthenticationUtil.checkHeaderAuth(request, basicAuth)) {response.setStatus(401);response.setHeader(Cache-Control, no-store);response.setDateHeader(Expires, 0);response.setHeader(WWW-authenticate, Basic Realm\test\);return null;}}//验证通过后String client request.getParameter(client);if(StringUtils.isBlank(client)) {//......}//其他操作....}public voiddoPost(HttpServletRequest request, HttpServletResponse response) throws IOException {doGet(request, response);}}BasicAuthenticationUtil 帮助类import java.io.IOException;import java.io.UnsupportedEncodingException;import javax.servlet.http.HttpServletRequest;import org.jfree.util.Log;import sun.misc.*;/*** basic Auth 认证方式** author Geely**/public classBasicAuthenticationUtil {/**** param request* param response* param sessionName* return*/public staticboolean checkHeaderAuth(HttpServletRequest request, String sessionName) {String authorization request.getHeader(Authorization);if ((authorization ! null) (authorization.length() 6)) {authorization authorization.substring(6, authorization.length());String decodedAuthbase64Decode(authorization);if(StringUtil.isNotBlank(sessionName)) {request.getSession().setAttribute(sessionName, decodedAuth);}return true;}return false;}/**** param request* param response* param sessionName* return*/public staticboolean checkUserAuth(HttpServletRequest request, String sessionName) {String sessionAuth null;if(StringUtil.isNotBlank(sessionName)) {sessionAuth(String) request.getSession().getAttribute(sessionName);}if (sessionAuth ! null) {Log.info(this is next step);return true;}return false;}/*** 编码** param bstr* return String*/SuppressWarnings(restriction)public static String base64Encode(byte[] bstr) {String strEncode newBASE64Encoder().encode(bstr);returnstrEncode;}/*** 解码** param str* return*/SuppressWarnings(restriction)public staticString base64Decode(String str) {if(StringUtil.isBlank(str)) {return null;}String s null;try{BASE64Decoder decoder newBASE64Decoder();byte[] b decoder.decodeBuffer(str);s new String(b, UTF8);}catch(UnsupportedEncodingException e) {//TODO Auto-generated catch blocks null;}catch(IOException e) {//TODO Auto-generated catch blocks null;}returns;}}当request第一次到达服务器时服务器没有认证的信息服务器会返回一个401 Unauthozied给客户端。认证之后将认证信息放在session以后在session有效期内就不用再认证了。以上就是HTTP基本认证(Basic Authentication)的JAVA实例代码全部内容