세션을 이용한 로그인/로그아웃(프로필 설정)

조수경·2022년 2월 14일
0

Spring

목록 보기
30/43

로그인

<2022-02-11>Spring숙제

  1. /lprod/login 로그인 기능을 완성해보자
  2. lprod_SQL.xml
    SELECT * FROM MEMBER
    WHERE MEMBERID = 'a001'
    AND PASSWORD = PKG_CRYPTO.ENCRYPT('asdfasdf')
    -> 시큐리티에서 알아서 해줌(이렇게 사용 안해도되지만 아직 안배워서 이것 쓰는 것)
  3. 세션을 활용해보자
  4. 로그인 되면 세션에 memberVO 정보를 담아보자
    session.setAttribute("member",memberVO)
  5. 로그인 되면 목록으로 이동시켜보자

lprod_SQL.xml

<!-- 로그인 -->
<!-- 
     기본키의 2가지 특징
     1. Not Null
     2. 유일성 (unique) /중복제거(no duplicate)

 -->
<select id="loginPost"  parameterType="memberVO" resultType="memberVO" >
	SELECT MEMBERID,PASSWORD,NAME,EMAIL,REGDATE,INTRODUCTION,MEMBER_SERT_PIC 
	FROM MEMBER
	WHERE  MEMBERID = #{memberId}
	AND    PASSWORD = PKG_CRYPTO.ENCRYPT(#{password})
</select>

lprodDao

//로그인
    public MemberVO loginPost(MemberVO memberVO) {
        return this.sqlSessionTemplate.selectOne("lprod.loginPost", memberVO);
        //고유값으로 하나만 받아와서 one사용
    }

lpordService

//로그인
    //메소드 재정의
    @Override
    public MemberVO loginPost(MemberVO memberVO) {
        return this.lprodMapper.loginPost(memberVO);
    }

lprodServiceImpl

//로그인
    public MemberVO loginPost(MemberVO memberVO);

LprodController

login GET 방식

@GetMapping("/login")
    public String login(MemberVO memberVO, Model model) {
        model.addAttribute("memberVO", memberVO);//넣어준값을 jsp에서 사용하는것 
        return "lprod/login";
    }

login POST 방식

    //	public String loginPost(@RequestParam String memberid,@RequestParam String password) {
//	public String loginPost(@RequestParam Map<String, String> map) {
    // /lprod/login?memberid=a001&password=asdfasdf
    @RequestMapping(value="/login", method=RequestMethod.POST)
    public String loginPost(@ModelAttribute MemberVO memberVO,
            Model model, 
            HttpServletRequest request) {
        logger.info("memberVO : " + memberVO.toString());

        MemberVO member = this.lprodService.loginPost(memberVO);

        if(member==null) {	//아이디&비밀번호 오류
            model.addAttribute("message","아이디&비밀번호 오류 입니다.");

            return "lprod/login";
        }else {	//로그인 처리
            //세션 객체를 받아옴
            HttpSession session = request.getSession();
            //세션의 존속 시간을 10분으로 설정(기본은 30분)
            session.setMaxInactiveInterval(10);
            //세션의 속성 명으로 member를 사용하여 member객체를 세팅함
            session.setAttribute("member", member);
            //session.setAttribute("id", member.getMemberid());

            //redirect
            return "redirect:/lprod/list";
        }
    }

logout POST 방식

    //어노테이션RequestMapping(value="/lprod/logout",method=RequestMethod=POST)
        @PostMapping("/logout")
        public String logout(HttpServletRequest request) {
            HttpSession session = request.getSession();
            //사용자 관련 세션을 초기화
            session.invalidate();

            //redirect
            return "redirect:/lprod/login";
        }

사진 컬럼 추가

profile
신입 개발자 입니다!!!

0개의 댓글

관련 채용 정보