shiro 權限控制框架 入門級實例(二)註冊加密

shiro 權限控制框架 入門級實例 註冊加密

上文完成了基本的加密登錄驗證,那麼接下來我們來看下注冊模塊。

ps:寫在代碼之前:

       登錄、註冊兩大模塊基本是貫穿了我們學習技術的過程,從最開始的jdbc+servlet+jsp開發登錄註冊demo,一直到各種各樣的框架搭建整合開發登錄註冊模塊。從最開始單用戶明文登錄,一直到現在的多用戶加密登錄驗證,這期間我讀過無數博文、走過無數彎路,在一次次跌倒與爬起的過程當中,我成長了很多、也改變了很多(不得不承認debug真的是很磨鍊一個人的性格),也算是在我個人的技術的道路上跨出了歷史性第一步。即便如此目前我的技術水平在大神的眼中還很“稚嫩”,但是我相信憑藉我的努力,終有一天可以成功。

廢話說完了,上代碼:
一、mapper.xml

<insert id="insertTUser" parameterType="com.grs.domain.TUser">
   insert into t_user set password = #{password},us_id = #{us_id},salt = #{salt} 
   </insert>

   <insert id="insertTUsername" parameterType="com.grs.domain.TUsername" keyProperty="us_id" useGeneratedKeys="true">
   insert into t_username set phonenumber = #{phonenumber},e_mail=#{e_mail}
   </insert>
   
   <select id="selectSalt" parameterType="java.lang.String" resultType="java.lang.String">
   select salt 
   from 
   t_user as user,
   t_username as us 
   where 
   user.us_id = us.us_id 
   and  
   (us.phonenumber=#{_parameter} or us.e_mail=#{_parameter})
   </select>
二、dao層
int insertTUser(TUser user);

void insertTUsername(TUsername uss);

String selectSalt(String username);

三、service
void insertTUser(TResiger rs);

String selectSalt(String username);

impl
@Override
public void insertTUser(TResiger rs) {

String hashAlgorithmName = "MD5";  
        String credentials = rs.getPassword();
        int hashIterations = 1024;
        String s = UUID.randomUUID().toString();
        ByteSource credentialsSalt = ByteSource.Util.bytes(s);  
        String obj = new SimpleHash(hashAlgorithmName, credentials, credentialsSalt, hashIterations).toHex();
       if (rs.getId()==1) {
      ts.setPhonenumber(rs.getUsername());
  um.insertTUsername(ts);
  int us_id = ts.getUs_id();
  user.setUs_id(us_id);
  user.setPassword(obj);
  user.setSalt(s);
  um.insertTUser(user);
}else {
  ts.setE_mail(rs.getUsername());
  um.insertTUsername(ts);
  int us_id = ts.getUs_id();
  user.setUs_id(us_id);
  user.setPassword(obj);
  user.setSalt(s);
  um.insertTUser(user);
  lst.add(rs.getUsername());
//   Map<String,String> message = new HashMap<>();
//   message.put("content", "歡迎註冊我公司,請您快速激活");
//   message.put("title", "測試郵件");
//   try {
// TestSend ts = new TestSend(lst, message);
// } catch (Exception e) {
// e.printStackTrace();
// }
}
}


@Override
public String selectSalt(String username) {
return um.selectSalt(username);
}

四、action層
@ResponseBody
@RequestMapping("insertTUser.do")
public String insertTUser(TResiger rs){
us.insertTUser(rs);
return "success";
}

注:與上文重複的代碼以直接省略
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章