业务需求
当用户在注册时,如果输入用户名,则应该向sso单点登录系统发起请求,校验用户数据是否存在.
如果存在则提示用户.
如果存在则提示用户:
业务接口文档说明
前端JS分析
url分析
检索JS代码
JS分析
$.ajax({
url : "http://sso.jt.com/user/check/"+escape(pin)+"/1?r=" + Math.random(),
dataType : "jsonp",
success : function(data) {
checkpin = data.data?"1":"0";
if(data.status == 200){
if (!data.data) {
validateSettings.succeed.run(option);
namestate = true;
}else {
validateSettings.error.run(option, "该用户名已占用!");
namestate = false;
}
}else{
validateSettings.error.run(option, "服务器正忙,请稍后!");
namestate = false;
}
}
});
编辑SSO UserController
/**
* 业务说明: jt-web服务器获取jt-sso数据, JSONP跨域请求
* URL地址:http://sso.jt.com/user/check/{param}/{type}
* 参数: param参数,需要校验的数据, type校验的类型
* 返回值结果:SysResult对象
* 真是的返回值: callback(SysResult的JSON)
*
*/@RequestMapping("/check/{param}/{type}")
public JSONPObject checkUser(@PathVariable String param,
@PathVariable Integer type,
String callback){
//true表示数据存在, false表示数据可以使用
boolean flag=userService.checkUser(param,type);
//int a=1/0; 测试JSONP全局异常
return new JSONPObject(callback, SysResult.success(flag));
}
编辑sso-service
/**
* 判断依据:根据用户名查询,如果结果>0表示用户已经存在
* @param param
* @param type
* @return
*/
@Override
public boolean checkUser(String param, Integer type) {
//将type类型转换为具体字段信息 1=username 2=phone 3=email String column=columnMap.get(type);
QueryWrapper<User> queryWrapper=new QueryWrapper<>();
queryWrapper.eq(column, param);
Integer count = userMapper.selectCount(queryWrapper);
return count>0;//return count>0?true:false;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。