【发布时间】:2012-08-02 22:07:23
【问题描述】:
我是使用 Spring MVC 3.0 的新手。我正在编写一个自定义身份验证类,我想知道如何将 SQL 查询中的值提取到变量中?这是我要实现的目标的示例,并且省略了我要询问的一些代码;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import org.springframework.jdbc.core.simple.ParameterizedRowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import com.crimetrack.DAO.LoginDAO;
import com.crimetrack.business.Login;
public class JdbcLoginDAO extends JdbcDaoSupport implements LoginDAO {
private final Logger logger = Logger.getLogger(getClass());
String dbUserName;
String dbPassword;
public boolean AuthenticateUser(Login login) {
logger.debug("Authenticating User");
String sql = "SELECT userName, password FROM tblofficers WHERE userName = :userName AND password = :password ";
//code for parameters : userName and password using login.getPassword() and login.getUsername()
//and code to get vaules out from query for comparison
if (dbUserName == login.getUserName()) {
if (dbPassword == login.getPassword()){
return true;
}
}
return false;
}
public static class LoginMapper implements ParameterizedRowMapper<Login>{
public Login mapRow(ResultSet rs, int rowNum) throws SQLException {
Login dbLogin = new Login();
dbLogin.setUserName(rs.getString("userName"));
dbLogin.setPassword(rs.getString("password"));
return dbLogin;
}
}
}
【问题讨论】:
-
我知道它并不能真正回答您的问题,但如果您已经拥有 Spring 堆栈,我强烈推荐 Spring Security 框架。它会很好地管理你所有的 auth/autz 问题。
-
我正在查看,但在这里我想实现自定义登录,因为我想为用户分配自定义功能。感谢您的评论,我正在看的东西也非常感谢
-
我第二个 Oliviers 的建议,并且做一个普通的 JDBC 查询与 spring 没有多大关系。这是一个示例,说明您将如何完成 devdaily.com/java/edu/pj/jdbc/jdbc0003 。我建议您不要将密码原样保存在数据库中,而是在将密码存储在数据库中时使用某种哈希函数。
-
你也可以使用 Spring Security 来做到这一点。 Spring Security 提供了框架(会话管理、URL 保护等),但您仍然必须通过 UserDetails 服务提供用户详细信息、角色等。
-
我不确定,但我正在做一些研究,我想出了这个我不知道是否有人能告诉我我是否正确: String dbUserName = (String)getJdbcTemplate().queryForObject( sql , 新对象[] { login.getUserName() }, String.class); String dbPassword = (String)getJdbcTemplate().queryForObject( sql, new Object[] { login.getPassword() }, String.class);从查询中获取值并将参数也传递给它
标签: java sql spring parameters resultset