최대 절전 모드를 사용하여 Spring MVC로 로그인 폼을 만들고 싶다.Spring MVC를 사용하여 로그인 정보를 유지하기위한 세션 처리 방법
로그인 정보를 유지하려면 '세션'을 사용해야한다는 것을 알았습니다.
그래서 'Controller.java', '.jsp'에서 사용합니다.
하지만 작동하지 않는 것 같습니다.
아래 코드는 제 코드입니다. Controller.java : 나는 session.id이 존재하는 경우에, 쇼 버튼을 로그 아웃하는 것을 목적으로하고 session.id이 존재하지 않는, 쇼
<c:if test="${sessionScope.loginId eq null}">
<!-- Not login: show login button -->
<div class="loginArea">
<form action="${loginAction}"> <!-- // URL '/login' -->
<input type="text" name="idInput" placeholder="ID" class="loginInput">
<input type="password" name="pwInput" placeholder="PASSWORD" class="loginInput">
<input id="loginButton" type="submit" value="login">
</form>
</div>
</c:if>
<c:if test="${sessionScope.loginId ne null}">
<!-- already login: show logout button -->
<div class="loginArea">
<form action="${logoutAction}"> <!-- // URL '/logout' -->
<input type="button" name="idInput" id="loginInfo" value="Welcome ${sessionScope.loginId}">
<input id="logoutButton" type="submit" value="LOGOUT">
</form>
</div>
</c:if>
: 아래
@Controller
public class PassengerController {
@Autowired
private PassengerService passengerService;
public void setPassengerService(PassengerService passengerService) {
this.passengerService = passengerService;
}
@RequestMapping(value = "/login")
public String login(HttpSession session, HttpServletRequest request) {
String id = request.getParameter("idInput");
String pw = request.getParameter("pwInput");
// check DB
// if it is right, add session.
session.setAttribute("id", id);
session.setAttribute("pw", pw);
return "flightschedule";
}
@RequestMapping(value = "/logout")
public String logout(HttpSession session) {
session.invalidate();
return "flightschedule";
}
}
는 flightschedule.jsp의 일부입니다 로그인 버튼.
내가 인터셉터 또는 봄 보안 등을 사용하지 않는 ..
나는 그들이 내 작은 프로젝트에 너무 복잡있어 생각했다.
그리고 대부분의 내 페이지에는 로그인/로그 아웃 양식이 있습니다. 나는 별도의 페이지를 사용하여 로그인하지 않습니다.
그래서 요격기를 사용하고 싶지 않습니다. 난 그냥 세션 키가 일부 JSP 페이지에 존재 여부를 확인하고 싶습니다. 존재 여부에 따라 페이지의보기를 변경하고 싶습니다.
위 코드는 부분적으로 작동합니다. 로그인시 'Welcome userId'가 표시됩니다.
하지만 페이지의 로고를 클릭하면 (첫 페이지로 이동) 여전히 '로그인'버튼이 표시됩니다. 그것은 session.loginId가 있기 때문에 '로그 아웃'버튼을 보여줘야합니다!
해결책이 있습니까? 로그인 방법에
유감스럽게도, 그러나 '인터셉터'가이 문제를 해결하는 가장 좋은 방법입니다. 그것보다 더 복잡한 것은 오히려 단지 새로운 클래스 그 자체입니다. 만약 정말로 인터셉터를 사용하고 싶지 않다면'filter'를 사용하십시오. –
@vipincp 알겠습니다. 'interceptor' 샘플 소스에 대해 본 것은 일부 페이지를 리디렉션해야합니다. 예를 들어 로그인없이 일부 페이지에 액세스하려고하면 LoginHandler가 로그인 페이지를 리디렉션합니다. 하지만 로그인 할 별도의 페이지가 없습니다. 로그인 페이지가 없으면 로그인 양식만으로 인터셉터가 가능합니까? – Lee
로그인 폼이 트리거되는 방식, 일부 매개 변수 또는 다른 것에 기반하여 올바르게 작동합니까? 이 매개 변수는 인터셉터에서 전달 될 수 있습니다. –