shiro 权限控制框架 入门级实例(二)注册加密

来源:互联网 发布:刘丹青 知乎 编辑:程序博客网 时间:2024/06/05 15:52
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";
}

注:与上文重复的代码以直接省略
原创粉丝点击