spring mvc homepage 스프링 홈페이지 만들기 6
이번에는 로그인을 해볼예정이에요. id와 패스워드가 필요할텐데요. 전 아까 sunplan 이라고 id를 만들었어요. 패스워드는 쉽게 121212로 하였네요. 이걸 가지고 로그인 하는걸 만들어 볼께요.
TOP.JSP파일을 수정할꺼에요.
<!-- Right navbar links -->
<ul class="order-1 order-md-3 navbar-nav navbar-no-expand ml-auto">
<c:if test="${not empty login}">
<li class="nav-item">
<button type="button" class="btn btn-outline-primary nav-link" onclick="goLogout()">${login.uname}님</button>
</li>
</c:if>
<c:if test="${empty login}">
<li class="nav-item">
<input type="text" class="form-control" placeholder="아이디" id="uid">
</li>
<li class="nav-item">
<input type="password" class="form-control" placeholder="패스워드" id="upassword">
</li>
<li class="nav-item">
<button type="button" class="btn btn-outline-primary" onclick="goLogin()">로그인</button>
</li>
<li class="nav-item">
<a class="nav-link" href="/user/register">가입하기</a>
</li>
</c:if>
<!-- Messages Dropdown Menu -->
<li class="nav-item dropdown">
</li>
<!-- Notifications Dropdown Menu -->
<li class="nav-item dropdown">
</li>
<li class="nav-item">
<a class="nav-link" data-widget="control-sidebar" data-slide="true" href="#" role="button"><i
class="fas fa-th-large"></i></a>
</li>
</ul>
</div>
</nav>
<!-- /.navbar -->
<script>
function goLogout()
{
var url;
url = '/user/logout';
var data = JSON.stringify({
});
getPostData(url,data,callback_common,false);
}
function goLogin()
{
var url;
url = '/user/login';
var data = JSON.stringify({
uid : $("#uid").val()
, upw : $("#upassword").val()
});
getPostData(url,data,callback_common,false);
}
var callback_common = function (result)
{
if(result['result']=='LOGIN_SUCCESS')
{
showmessage("알림","로그인 되었습니다..",5000,'');
self.location = "${pageContext.request.contextPath}/";
}
if(result['result']=='LOGOUT_SUCCESS')
{
showmessage("알림","로그아웃 되었습니다..",5000,'');
self.location = "${pageContext.request.contextPath}/";
}
else if(result['result']=='ID_NOT_FIND')
{
showmessage("알림","아디를 확인해주세요.",5000,'');
$("#uid").val("");
$("#uid").focus();
}
else if(result['result']=='PASSWORD_FAIL')
{
showmessage("알림","아디를 확인해주세요.",5000,'');
$("#uid").val("");
$("#uid").focus();
}
else
{
showmessage("알림",result['message'],20000,'');
ms_alert("알림","내용이 등록/수정을 실패하였습니다");
}
}
</script>
<!-- Right navbar links --> 아래쪽에 로그인이 가능한 폼을 추가했어요.
login 값의 유무에 따라 로그인 로그아웃 기능을 넣었어요.
컨트롤러는 이렇게 추가했어요.
@ResponseBody
public CommonData logout(HttpServletRequest request, HttpServletResponse response, @RequestBody CommonData dto, Model model) throws Exception{
Map<String, String> paramMap = new HashMap<>();
CommonData result = new CommonData();
HttpSession session = request.getSession();
Util_Message smsp = Util_Message.getInstance();
Object obj = session.getAttribute("login");
if (obj != null) {
Member vo = (Member) obj;
String ip = request.getRemoteAddr();
dto.put("u_idx", vo.getIdx());
dto.put("uip", ip);
dto.put("ustate", "logout");
service.insert(dto, "User_Mapper.user_login_history");
System.out.println("logout.................................2");
session.removeAttribute("login");
session.invalidate();
System.out.println("logout.................................3");
Cookie loginCookie = WebUtils.getCookie(request, "loginCookie");
if (loginCookie != null) {
loginCookie.setPath("/"); loginCookie.setMaxAge(0);
response.addCookie(loginCookie);
}
}
result.put("result", "LOGOUT_SUCCESS");
return result;
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
@ResponseBody
public CommonData post_login(HttpServletRequest request, HttpServletResponse response, @RequestBody CommonData dto, Model model) throws Exception{
Map<String, String> paramMap = new HashMap<>();
CommonData result = new CommonData();
HttpSession session = request.getSession();
Util_Message smsp = Util_Message.getInstance();
if (session.getAttribute("login") != null) {
smsp.print_String("clear login data before");
session.removeAttribute("login"); //로그인 정보 삭제
}
smsp.print_CommonData(dto); //넘어온데이터 출력.
String useCookie=dto.get("useCookie");
int cnt = service.listSearchCount(dto, "User_Mapper.user_id_check");
if (cnt == 0)
{
result.put("result", "ID_NOT_FIND");
result.put("message", "ID가 없습니다.");
return result;
}
Member vo = service.select_member(dto, "User_Mapper.tb_member_select_one");
if(vo==null)
{
result.put("result", "PASSWORD_FAIL");
result.put("message", "패스워드를 확인해주세요.");
return result;
}
String ip = request.getRemoteAddr();
dto.put("u_idx", vo.getIdx());
dto.put("uip", ip);
dto.put("ustate", "login");
service.insert(dto, "User_Mapper.user_login_history");
smsp.print_String_no_line("로그인정보가 있습니다.");
String CPath = "/";
//SecurityMember s_mem = new SecurityMember(vo);
model.addAttribute("userVO", vo);
session.setAttribute("login", vo);
if(useCookie!=null)
{
if(useCookie.equals("true"))
{
smsp.print_String_no_line("쿠키정보를 추가합니다.");
//쿠키...
//로그인 유지기간 섹션값저장
int limit_time = 60*60*24*365;//1년일
Date sessionLimit = new Date(System.currentTimeMillis()+(1000*limit_time));
dto.put("sessionId",session.getId());
dto.put("sessionLimit",sessionLimit);
service.update(dto, "User_Mapper.keepLogin");
Cookie loginCookie = new Cookie("loginCookie", session.getId());
loginCookie.setPath("/");
loginCookie.setMaxAge(limit_time);
smsp.print_String("CPath : " + CPath);
CPath = "/";
response.addCookie(loginCookie);
}
}
result.put("result", "LOGIN_SUCCESS");
return result;
}
로그인 로그아웃 부분을 추가했어요.
mapper파일도 수정을 해줘요.
<select id="tb_member_select_one" resultType="com.eunhocompany.domain.Member">
SELECT tm1.idx
, tm1.uid
, tm1.uname
, tm1.uchart
, tm1.uemail
, tm1.umobile
, tm1.menu_lv
, tm1.join_pass
, tm1.mt_use
FROM tb_member tm1
where tm1.mt_use = 'Y'
and tm1.uid = #{uid}
and tm1.upw = #{upw}
order by menu_lv desc
limit 1
</select>
<insert id="user_login_history">
insert into tb_login_history(
u_idx
, uip
, ustate
, mt_input_wdate
)
values( #{u_idx}
, #{uip}
, #{ustate}
, now()
)
</insert>
로그인 로그아웃 을 해볼께요.
로그인 로그아웃을 확인해봤어요.
히스토리도 잘 남는지 볼께요.
다음은 게시판을 만들어볼께요.
'SPRING FRAMEWORK' 카테고리의 다른 글
스프링 게시판 만들기 2 (0) | 2020.06.01 |
---|---|
스프링 게시판 만들기 1 (0) | 2020.05.27 |
spring mvc homepage 스프링 홈페이지 만들기 5 (0) | 2020.05.18 |
spring mvc homepage 스프링 홈페이지 만들기 4 (0) | 2020.05.18 |
spring mvc homepage 스프링 홈페이지 만들기 3 (0) | 2020.05.15 |