안녕하세요, 저는 HttpSession에 사용자 pojo를 저장하고 세션이 완료되면 해당 HttpSession 객체를 무효화하여 사용자가 인증하기 위해 자체 구현을 사용하는 응용 프로그램을 보유하고 있습니다. 보안 컨텍스트를 사용하여 사용자를 인증하는 것입니다. 의 내가 서블릿 AuthenticateUserServlet을 가정 해 봅시다 :보안 컨텍스트에서 프로그래밍 방식으로 세션을 인증하고 만드는 방법
public void doPost(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException{
String username=req.getParameter("username");
String password=req.getParameter("password");
if(Authenticator.check(username,password)){
HttpSession session=req.getSession(true);
session.setAttribute("user",Authenticator.getUser(username));
PrintWriter out= req.getWriter();
out.println("<h2>Welcome</h2>");
}else{
PrintWriter out= req.getWriter();
out.println("<h2>the password or username are incorrect</h2>");
}
}
코드 위의 나에게 보안 컨텍스트의 힘을 제공하지 않습니다 그래서 사용자가 어떻게든지에 말할 로그인을 확인 있는지 확인 때입니다 wan't 무엇 보안 컨텍스트이 사용자는 여기에 액세스 자신의 역할 내 AuthenticateUserServlet 내부의이 같은 일입니다 수 : 내가 ("내-JAAS")를 내 자신의 로그인 모듈을 만든
public void doPost(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException{
String username=req.getParameter("username");
String password=req.getParameter("password");
LoginContext lc = new LoginContext("my-jaas",new MyCallbackHandler(username,password));
try{
lc.login();
//notice i have not save any thing in the HTTPSeession
//i want my container to remember this user like what happens in the
// form based authentication where nothing gets saved in the httpSession
// but the user keeps logged in(cartalina uses a session object not httpsession for that)
PrintWriter out= req.getWriter();
out.println("<h2>Welcome</h2>");
}
catch(LoginException e){
PrintWriter out= req.getWriter();
out.println(e.getMessage());
}
}
내가 폼 기반 인증을 구성 할 때 그것을 잘 작동합니다 tomcat7에서 작동합니다.
서블릿 3.0
사람처럼 로그인 할 수 있습니다, 그것은 내 눈 앞에 있었다; 감사합니다. – achabahe
기꺼이 도와 드리겠습니다. :-) – flo