服务端验证的问题处理

Posted huangcan1688

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务端验证的问题处理相关的知识,希望对你有一定的参考价值。

在使用服务端验证的时候,因为各种需求的不同,可以用作一下的几个处理。

 

1、使用sql语句的验证

  就是在写sql语句的时候,进行用户名和密码的匹配查询。如:where name = ? and password = ?。在客户端请求时,在servlet层获取用户名和密码参数。并调用该方法,如果返回有值,则验证通过。反之,不通过。

  通过这种方法。在客户端提示页面错误信息的时候,可能体验感不是太好。因为不能准确的提示用户,是用户名输入错误,还是密码输入错误。

//获取请求的用户名和参数
String name = req.getParameter("name");
String password = req.getParameter("password");

//方法类
UserDao userDao = new UserDao();

//通过sql验证
List<User> user = userDao.findUser(name,password);

//判断
if(user.size() > 0){// 验证通过
    //通过:跳转页面
}else{// 验证不通过
    //提示:用户名或密码错误
}

 

2、使用List集合存储后台数据信息,再进行验证

  写sql语句的时候是获取后台所有的数据信息。如:select * from 表。在客户端请求时,在servlet层获取用户名和密码参数。并遍历List集合,把List中的用户名和密码与servlet获取到的参数进行比较验证。

  通过这种方法。在验证后处理页面的跳转信息的时候。很难去处理。

  下面的方法进行处理后,可以使用户界面出现错误是得到较好的体验。

//获取请求的参数
String name = req.getParameter("name");
String password = req.getParameter("password");

//方法类
UserDao userDao = new UserDao();
// 获取后台所有的用户信息 sql语句:select * from user List<User> findAllUser = userDao.findAllUser(); //把List<User>集合中的用户名和密码单独抽离封装成一个集合 List<String> collectName = findAllUser.stream().map(User::getName).collect(Collectors.toList()); List<String> collectPassword = findAllUser.stream().map(User::getPassword).collect(Collectors.toList()); //进行验证 if (collectName.contains(name)) {// 验证用户名 if (collectPassword.contains(password)) {// 验证密码 //验证通过 } else {       //验证不通过,提示用户:密码错误 } } else { //验证不通过,提示用户:用户名错误 }

 

 

  

以上是关于服务端验证的问题处理的主要内容,如果未能解决你的问题,请参考以下文章

Dropzone处理队列不适用于服务器端验证

如何使用 Relay 处理服务器端输入验证?

如何在服务器端验证 Google reCAPTCHA v3?

在 PHP 重定向期间处理片段标识符

智能预判 (六: 服务端战斗 模拟)

论如何设计一款端对端加密通讯软件