作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试模拟身份验证 (BASIC) 在 Tomcat 中是如何发生的,问题是当我第二次尝试获取资源时它不要求密码而是直接在我的浏览器上显示资源。如何为每个请求强制弹出登录?
下面是我正在使用的 Servlet 代码。
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//import org.apache.tomcat.util.buf.Base64;
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("This is the Test Servlet");
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = (String) headerNames.nextElement();
out.print("<br/>Header Name: <em>" + headerName);
String headerValue = request.getHeader(headerName);
out.print("</em>, Header Value: <em>" + headerValue);
out.println("</em>");
}
out.println("<hr/>");
String authHeader = request.getHeader("authorization");
String encodedValue = authHeader.split(" ")[1];
//out.println("Base64-encoded Authorization Value: <em>" + encodedValue);
//String decodedValue = Base64.base64Decode(encodedValue);
//out.println("</em><br/>Base64-decoded Authorization Value: <em>" + decodedValue);
out.println("</em>");
}
}
还有我的部分 web.xml 角色和用户
<role rolename="tomcat"/>
<user username="tomcat" password="tomcat"
roles="tomcat"/> <user username="myname" password="mypassword" roles="tomcat"/> <user username="test" password="test"/>
</tomcat-users>
PS:我知道这不是很好的身份验证方式,但我需要知道它有效,然后我才能探索 ssl 身份验证。
最佳答案
您可以在每次调用后清除 session (doGet() 方法的最后一行):
request.getSession().invalidate();
关于java - 后续访问的Tomcat鉴权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32494131/
我是一名优秀的程序员,十分优秀!