Springショッピングモールの作成-5ログイン
12614 ワード
ログインの実装
セッションとCookieを使用してログインを実施します.
login.jspを作成し、既存のjoinを作成します.jspから一部のみインポートし、コントローラからGetMappingを作成します.
@GetMapping("/member/login")
public String login(@ModelAttribute("loginMemberBean") MemberDto loginMemberBean) {
return "member/login";
}
パラメータはセッションログインであるため、HttpSessionが追加されます.modelAttributeは登録コストのときに使用される同じMemberDtoであるため、有効性検証は追加されず、名前だけをLoginMemberBeanに変更し、@ValidとBindingResultを追加して検証します. @PostMapping("/member/login")
public String login_pro(HttpSession session, @Valid
@ModelAttribute("loginMemberBean") MemberDto loginMemberBean,
BindingResult result) {
if(result.hasErrors()) {
return "member/login";
}
memberService.loginMember(session, loginMemberBean);
if(session.getAttribute(MemberDto.MEMBER_LOGIN) != null) {
return "member/login_success";
}else {
return "member/login";
}
}
サービスは、入力したメンバーのIDとパスワードをデータベースでクエリーし、カラムが存在する場合はセッションに保存します. public void loginMember(HttpSession session, MemberDto loginMemberBean) {
MemberDto findMember = memberDao.findMember(loginMemberBean);
if(findMember != null) {
session.setAttribute(MemberDto.MEMBER_LOGIN, findMember);
}
}
その後、コントローラでユーザーのセッションを再検索し、loginDtoというセッションがない場合はlogin画面を返し、login success画面にユーザーを移動させます.login_success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var='root' value="${pageContext.request.contextPath}" />
<script>
alert("로그인 되었습니다")
location.href= "${root}/";
</script>
Interceptorを使用して画面を処理する
画面上のログインが成功するとログアウトのみが表示されるため、Interceptorを使用します.ログインしていない場合はログインタグのみが表示されます.
ログインしていない場合
ログイン時
Interceptorを継承するクラスを作成します.
public class CheckLoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
MemberDto memberVO = (MemberDto)request.getSession().
getAttribute(MemberDto.MEMBER_LOGIN);
request.setAttribute("loginMember", memberVO);
return true;
}
}
preHandleは、まず、コントローラを指定する操作の前に実行する操作を実行します.特定のコントローラが実行される前に、セッションからメンバー情報が取得され、画面にメンバー情報が渡されます.
したがって、jspに切り替えたオブジェクトがnullの場合、登録またはログインコストが表示され、nullでない場合、受注リストとログアウトが表示されます.
パスを指定する必要があります.servlet-context.xmlにbeanでインタフェースを登録すればいいです.
<beans:bean id="checkLoginInterceptor" class="sloth.shop.interceptor.CheckLoginInterceptor" />
<interceptors>
<interceptor>
<mapping path="/**" />
<beans:ref bean="checkLoginInterceptor" />
</interceptor>
</interceptors>
これにより、Interceptorが正常に動作します.Reference
この問題について(Springショッピングモールの作成-5ログイン), 我々は、より多くの情報をここで見つけました https://velog.io/@sloth/Spring-쇼핑몰-만들기-5-로그인テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol