您的位置:首页 > 其它

浏览器原生登陆验证实现

2017-05-16 19:57 645 查看
在登陆某些web系统时,浏览器会弹出一个类似confirm的登陆框,供用户输入用户名和密码,进行验证。

由于此登陆框不是js控制的,遍找了下其实现原理。

http header WWW-Authenticate

此header一般和401 http状态一起使用。

1、服务端回向浏览器发送头信息,

WWW-Authenticate: Basic realm=“.”

2、浏览器收到后,便会弹回登陆框。填写完成确定后,请求头会包含,

Authorization: Basic YWRtaW46YWRtaW4=

其中Basic后面的信息,是"用户名:密码"的base64编码形式,用户名和密码使用半角冒号分隔

3、服务端收到请求后,获取Authorization头信息,并对其中的用户信息进行验证,并向浏览器注入cookie。

String auth = request.getHeader("Authorization");
if (StringUtils.isEmpty(auth)) {
response.addHeader("WWW-Authenticate", "Basic realm=\".\"");
response.setStatus(401);
} else {
auth = new String(Base64.getDecoder().decode(auth));
String name = auth.substring(0, auth.indexOf(":"));
String password = auth.substring(auth.indexOf(":") + 1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: