목록
목차
구성
#1 . 아이디 비밀번호 전달
//아이디 입력 체크
if(!loginF.userid.value){
alert('아이디를 입력하세요')
loginF.userid.focus();
return false;
//비밀번호 입력 체크
}else if(!loginF.pwd.value){
alert('비밀번호를 입력하세요')
loginF.pwd.focus();
return false;
}
return true;
입력 여부 유효성 검사
<tr>
<th>아이디</th>
<td>
<input type="text" name="userid"
class="form-control" autofocus="autofocus"
placeholder="ID">
</td>
</tr>
<tr>
<th>비밀번호</th>
<td>
<input type="password" name="pwd"
class="form-control"
placeholder="Password">
</td>
</tr>
유효성 검사 실시 후 아이디, 비밀번호 값 전달
#2 . 회원 정보 유효성 검사 및 호출
String id = request.getParameter("userid");
String pwd = request.getParameter("pwd");
로그인 페이지에서 입력한 아이디와 비밀번호값 받아오기
if(id==null || pwd==null || "".equals(id.trim())||"".equals(pwd.trim())){
response.sendRedirect("login.jsp");
return;
}
유효성 체크
//--사용자 정의 Exception
public class NotUserException extends Exception {
public NotUserException() {
super("NotUserException");
}
public NotUserException(String msg) {
super(msg);
}
}
사용자 정의 Exception 생성
//--로그인 체크
public UserVO loginCheck(String id, String pwd)
throws SQLException,NotUserException
{
UserVO user = this.selectUserById(id);
if(user==null) {
//아이디가 존재하지 않을 경우 ==> 예외 발생
throw new NotUserException(id+"란 아이디는 존재하지 않아요");
}
//비밀번호 체크
String dbPwd=user.getPwd();
if(!pwd.equals(dbPwd)) {
//비밀번호가 불일치라면
throw new NotUserException("비밀번호가 일치하지 않아요");
}
//회원이 맞다면
return user;//해당 회원 반환
}
아이디 비밀번호 존재 여부 체크 후 아이디가 존재하지 않을 경우와 비밀번호가 일치하지 않을 경우 예외를 발생 시키고
모두 통과한 회원 정보 전달
UserVO loginUser = userDao.loginCheck(id, pwd);
유효성 검사를 모두 통과한 회원 정보 호출
#3 . Session을 이용한 회원 전용 페이지 설정
//회원 정보 저장
session.setAttribute("loginUser", loginUser);
Session에 회원 정보 저장
UserVO member=(UserVO) session.getAttribute("loginUser");
세션에 저장된 회원 정보 호출
if(member==null){
%>
<script>
alert('로그인해야 이용할 수 있어요');
location.href = "<%=request.getContextPath()%>/login/login.jsp";
</script>
<%
return;
}
로그인 여부 체크
//정지회원일 경우
if(member.getMstate()==1){
%>
<script>
alert('정지 회원입니다. 일반회원으로 전환해야 이용 가능합니다.
회원정보를 수정한 뒤 다시 로그인 하세요')
location.href = "<%=request.getContextPath()%>/member/edit.jsp?idx=
<%=member.getIdx()%>&mode=<%=member.getMstate()%>";
</script>
<%
return;
}
일반회원, 정지회원, 탈퇴회원 여부를 체크해 정지 회원일 경우 회원정보를 수정 페이지로 이동
<%@ include file="/login/loginCheckModule.jsp" %>
회원 전용 페이지에 해당 페이지를 include
#4 . Session을 이용한 관리자 전용 페이지 설정
UserVO member=(UserVO) session.getAttribute("loginUser");
세션에 저장된 회원 정보 호출
if(member==null){
%>
<script>
alert('로그인해야 이용할 수 있어요');
location.href = "<%=request.getContextPath()%>/login/login.jsp";
</script>
<%
로그인 여부 체크
if(!member.getUserid().equals("admin")){
%>
<script>
alert('관리자만 이용할 수 있어요');
history.back();
</script>
<%
return;
}
회원의 아이디가 "admin" 이 아닐 경우 접근 불가 설정
//관리자 계정이 정지 되었을 경우
if(member.getMstate()==1){
%>
<script>
alert('정지된 관리자입니다. 일반회원으로 전환해야 이용 가능합니다.
회원정보를 수정한 뒤 다시 로그인 하세요')
location.href = "<%=request.getContextPath()%>/member/edit.jsp?idx=
<%=member.getIdx()%>&mode=<%=member.getMstate()%>";
</script>
<%
return;
}
일반회원, 정지회원, 탈퇴회원 여부를 체크해 정지 관리자의 계정일 경우 회원 정보 수정 페이지로 이동
<%@ include file="/login/adminCheckModule.jsp" %>
회원 목록, 회원 검색, 회원 삭제 페이지에 include 하여 관리자 계정만 회원을 조회, 검색, 삭제 할 수 있도록 설정
#5 . 로그인 정보 출력
UserVO loginUser = (UserVO) session.getAttribute("loginUser");
Session에 저장된 회원 정보 호출
boolean isLogin =(loginUser==null)? false: true;
로그인 시 true값 반환
if(isLogin){
<li class="nav-item bg-primary">
<a class="nav-link text-white" href="#"><%=loginUser.getUserid() %>님 로그인 중...</a>
</li>
//로그아웃 버튼 추가
<li class="nav-item">
<a class="nav-link" href="<%=myctx%>/login/logout.jsp">Logout</a>
</li>
}
로그인 하여 true값을 받았을 경우 회원 정보의 아이디 출력 후 로그아웃 버튼 추가
#6 . Cookie를 이용한 아이디 저장
String saveId = request.getParameter("saveId");
아이디 저장 CheckBox 체크 유무 값 호출
Cookie ck = new Cookie("uid",loginUser.getUserid());
로그인한 회원의 아이디를 저장
if(saveId!=null){//체크했다면
ck.setMaxAge(7*24*60*60);
}else{//체크하지 않았다면
ck.setMaxAge(0);
}
체크 시 7일간 쿠키의 값이 유효하도록 설정
미 체크 시 쿠키 삭제
ck.setPath("/");
어디서든 쿠키를 꺼내올 수 있도록 설정
response.addCookie(ck);
쿠키를 클라이언트 쪽에 밀어 넣기
response.sendRedirect("../index.jsp");
초기 페이지로 이동
Cookie[] cks = request.getCookies();
if(cks!=null){
for(Cookie ck : cks){
String key = ck.getName();//쿠키의 키값을 반환
if(key.equals("uid")){
flag=true;
uid=ck.getValue();//사용자 아이디
break;
}
}
}
<input type="text" name="userid" value="<%=uid %>"
쿠키를 꺼내 사용자 아이디가 저장되어 있으면 아이디 입력 폼에 출력
<input type="checkbox" <%=(flag)?"checked":"" %> name="saveId" id="saveId">
아이디 저장
</input>
쿠키를 꺼내 사용자 아이디가 저장되어 있으면 boolean 타입 flag = true
flag가 true일 경우 아이디 저장 CheckBox 를 check 설정
#7 . 탈퇴회원 로그인 막기
create or replace view member_view
as
select * from member where mstate>-1;
회원의 회원상태(mstate) 값이 1 또는 0인 회원의 정보만 호출하는 view 생성
일반회원(1), 정지회원(0), 탈퇴회원(-1)
//--아이디로 회원 정보 검색
public UserVO selectUserById(String id) throws SQLException {
try {
con=DBUtil.getCon();
String sql="select * from member_view where userid=?";
ps=con.prepareStatement(sql);
ps.setString(1, id);
rs=ps.executeQuery();
List<UserVO> arr=this.makeList(rs);
if(arr!=null && arr.size()==1) {
UserVO user = arr.get(0);
return user;
}
return null;
} finally {
close();
}
}
회원 정보를 검색할 때 해당 view를 사용해 일반회원과 정지회원만 검색
#8 . 로그아웃
session.invalidate();
response.sendRedirect("../index.jsp");
로그아웃 클릭 시 세션에 저장된 모든 변수를 제거 후 초기 페이지로 이동
'기능 학습 > 쇼핑몰 구현' 카테고리의 다른 글
[쇼핑몰 구현] 8. 페이징 처리 (회원 목록) (0) | 2021.07.23 |
---|---|
[쇼핑몰 구현] 7. MyPage (본인 정보 수정) 구현 (0) | 2021.07.23 |
[쇼핑몰 구현] 5. 회원정보 검색 (0) | 2021.07.21 |
[쇼핑몰 구현] 4. 회원정보 수정 삭제 (0) | 2021.07.21 |
[쇼핑몰 구현] 3. 회원목록 구현 (0) | 2021.07.21 |