상세 컨텐츠

본문 제목

Session 로그인 처리

BackEnd/project

by H_Develop 2023. 7. 10. 10:09

본문

https://velog.io/@chang626/%EB%A1%9C%EA%B7%B8%EC%9D%B8-%EC%B2%98%EB%A6%AC-1-%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98-2

 

로그인 처리 1 - 쿠키, 세션 2

'스프링 MVC 2편 - 백엔드 웹 개발 활용 기술' 수업을 듣고 정리한 내용입니다. 🔔 목표앞서 쿠키에 중요한 정보를 보관하는 방법은 여러가지 보안 이슈가 있었다. 이 문제를 해결하려면 결국 중

velog.io

위에서 가져왔다 설명 짱잘되어있다.

 

방법 1

    @PostMapping("login")
    public String loginV2(@Valid @RequestBody LG0010VO form,
        BindingResult bindingResult, HttpServletResponse response, HttpServletRequest request) {

        if (bindingResult.hasErrors()) {
            return "login/loginForm";
        }
        
        LG0010VO loginMember = LG0010Service.login(form);
        if (ObjectUtils.isEmpty(loginMember)) {
            bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다.");
            return "login/loginForm";
        }

        //로그인 성공 처리
        // 세션이 있으면 있는 세션 반환, 없으면 신규 세션을 생성
        HttpSession session = request.getSession();
        // 세션에 로그인 회원 정보 보관
        session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember);

        return "redirect:/";
    }

로그인 아이디 비밀번호 확인해서 Session 생성으로 로그인 처리를 하는데,

핵심은 HttpSession session = request.getSession(); 세션을 만들고

session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); setAttribute로 세션에 로그인 정보를 담는다

 

        LG0010VO loginMember = (LG0010VO)session.getAttribute(SessionConst.LOGIN_MEMBER);
        model.addAttribute("member", loginMember);

컨트롤러에서 세션을 불러올 때, 

getAttribute로 key값인 sessionConst.LOGIN.MEMBER를 불러와 사용한다. ( loginMember.getLoginId() )

 

public class SessionConst {
    public static String LOGIN_MEMBER = "loginMember";
}

key값은 상수로 따로 Class를 만들어 주었다.

 

방법 2

@SessionAttribute

session을 가져올 때만 사용한다.

 

@GetMapping("/")
public String homeLoginV3Spring(
        @SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember, Model model) {


    // 세션에 회원 데이터가 없으면 home
    if (loginMember == null) {
        return "home";
    }

    // 세션이 유지되면 로그인으로 이동
    model.addAttribute("member", loginMember);
    return "loginHome";
}

@SessionAttribute에 미리 key값으로 정의해둔 LOGIN_MEMBER를 가져와서 member에 담아 사용한다.