pom.xml
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
class UserController
@RequestMapping("/login/form")
public String loginForm(@Valid Authenticate authenticate , BindingResult bindingResult, Model model){
if(bindingResult.hasErrors()){
return "users/login";
}
User user=userDao.findById(authenticate.getUserId());
if(user==null){
//에러 처리 -존재하지 않는 사용자 입니다.
model.addAttribute("errorMessage", "존재하지 않는 사용자입니다.");
return "users/login";
}
if(!user.matchPassword(authenticate)){
// 에러 처리 - 비밀번호가 틀립니다.
model.addAttribute("errorMessage", "비밀번호가 틀립니다.");
return "users/login";
}
// 세션에 사용자 정보 저장
logger.debug("loginForm {}" , authenticate.toString());
return "users/login";
}
class UserDao
public User findById(String userId) {
String sql =" select * from USERS where userId =?";
RowMapper<User> rowMapper =new RowMapper<User>() {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
return new User(
rs.getString("userId"),
rs.getString("password"),
rs.getString("name"),
rs.getString("email")
);
}
};
try{
return getJdbcTemplate().queryForObject(sql, rowMapper, userId);
}catch(Exception e){
return null;
}
}
class User
public boolean matchPassword(Authenticate authenticate) {
if(this.password==null){
return false;
}
return this.password.equals(authenticate.getPassword());
}
class UserTest
@Test
public void matchPassword() throws Exception{
String password = "password";
Authenticate authenticate=new Authenticate("userId", password);
User user =new User("userId", password, "name", "javagigi@slipp.net");
assertTrue(user.matchPassword(authenticate));
authenticate=new Authenticate("userId", "password2");
assertFalse(user.matchPassword(authenticate));
}
login.jsp
<form:form modelAttribute="authenticate" name="question" method="post" action="/users/login/form">
<div class="form-group">
<label for="userId">사용자 아이디</label>
<form:input class="form-control" id="userId" name="userId" path="userId" />
<form:errors path="userId" cssClass="error"/>
</div>
<div class="form-group">
<label for="password">비밀번호</label>
<form:password class="form-control" id="password" name="password" path="password"/>
<form:errors path="password" cssClass="error"/>
</div>
<c:if test="${not empty errorMessage }">
<div class="control-group">
<div class="controls">
<div class="error">${errorMessage }</div>
</div>
</div>
</c:if>
<button type="submit" class="btn btn-success clearfix pull-right">로그인</button>
<div class="clearfix" />
</form:form>
댓글 ( 4)
댓글 남기기