表單提交校驗與密碼的加密


首先,我們需要對用戶名進行非空校驗,為了避免用戶輸入兩個空串,我們在此自定義去空轉換器,springmvc.xml的定義:

 1 <!-- Converter轉換器 工廠 -->
 2     <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
 3         <!-- 日期 -->
 4         <!-- 去掉前后空格 -->
 5         <property name="converters">
 6             <list>
 7                 <bean class="cn.cuibusi.common.conversion.CustomConverter"></bean>
 8             </list>
 9         </property>
10     </bean>

然后 我們需要在處理器適配器中引入配置的去空轉換器:

1     <!-- 處理器 映射器  適配器 -->
2     <mvc:annotation-driven conversion-service="conversionService"/>

然后是我們的自定義去空類:

 1 public class CustomConverter implements Converter<String, String>{
 2     //去掉前后空格
 3     @Override
 4     public String convert(String source) {
 5         // TODO Auto-generated method stub
 6         try {
 7             if(null != source){
 8                 source = source.trim();
 9                 if(!"".equals(source)){
10                     return source;
11                 }
12             }
13         } catch (Exception e) {
14             // TODO: handle exception
15         }
16         return null;
17     }
18 
19 }

然后是登錄Controller:

 1     @Autowired
 2     private BuyerService buyerService;
 3     @Autowired
 4     private SessionProvider sessionProvider;
 5     //提交登陸
 6     @RequestMapping(value = "/login.aspx",method=RequestMethod.POST)
 7     public String login(String username,String password,String returnUrl,
 8             HttpServletRequest request,HttpServletResponse response, Model model){
 9         //1:用戶名不能為空
10         if(null != username){
11             //2:密碼不能為空
12             if(null != password){
13                 //3:用戶名必須正確
14                 Buyer buyer = buyerService.selectBuyerByUsername(username);
15                 if(null != buyer){
16                     //4:密碼必須正確
17                     if(buyer.getPassword().equals(encodePassword(password))){
18                         //5:保存用戶名到Session中(Redis中)  
19                         sessionProvider.setAttribuerForUsername(RequestUtils.getCSESSIONID(request, response), buyer.getUsername());
20                         //6:跳轉到之前訪問頁面
21                         return "redirect:" + returnUrl;
22                     }else{
23                         model.addAttribute("error", "密碼必須正確");
24                     }
25                     
26                 }else{
27                     model.addAttribute("error", "用戶名必須正確");
28                 }
29                 
30             }else{
31                 model.addAttribute("error", "密碼不能為空");
32             }
33             
34         }else{
35             model.addAttribute("error", "用戶名不能為空");
36         }
37         return "login";
38     }

最后時MD5加密后再進行16進制轉換:

 1     public String encodePassword(String password){
 2         //
 3         //password = "gxzcwefxcbergfd123456errttyyytytrnfzeczxcvertwqqcxvxb";
 4         //1:MD5  算法
 5         String algorithm = "MD5";
 6         char[] encodeHex = null;
 7         try {
 8             //MD5加密
 9             MessageDigest instance = MessageDigest.getInstance(algorithm);
10             //加密后  
11             byte[] digest = instance.digest(password.getBytes());
12             //
13             //2:十六進制
14             encodeHex = Hex.encodeHex(digest);
15         } catch (NoSuchAlgorithmException e) {
16             // TODO Auto-generated catch block
17             e.printStackTrace();
18         }
19         return new String(encodeHex);
20     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM