10.12UserAccount(SSO)修订
一、流程
###1.工作流
phoneregister-webflow.xml
xml
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow
http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">
<var name="phoneRegistration" class="com.supermap.icloud.cas.model.ICloudPhoneRegistration"/>
<on-start>
<evaluate expression="initialICloudFlowSetupAction" />
</on-start>
<view-state id="viewRegisterForm" view="casPhoneRegisterView" model="phoneRegistration">
<binder>
<binding property="phoneNumber"/>
<binding property="nickname"/>
<binding property="password"/>
<binding property="SMSVerifyCode"/>
<binding property="username"/>
<binding property="companyname"/>
</binder>
<on-entry>
<set name="viewScope.commandName" value="'phoneRegistration'"></set>
</on-entry>
<transition on="send" bind="true" validate="false">
<evaluate expression="registrationViaFormAction.doSend(flowRequestContext,flowScope.phoneRegistration)" />
</transition>
<transition on="register" bind="true" validate="true" to="checkSMSVerifyCode">
<evaluate expression="registrationViaFormAction.resetStatus(flowRequestContext,flowScope.phoneRegistration)" />
</transition>
</view-state>
<action-state id="checkSMSVerifyCode">
<evaluate expression="registrationViaFormAction.doCheckSMSVerifyCode(flowRequestContext,flowScope.phoneRegistration)" />
<transition on="success" to="userRegistration" />
<transition on="error" to="handleAuthenticationFailure" />
</action-state>
<action-state id="userRegistration">
<evaluate expression="registrationViaFormAction.doPhoneRegister(flowRequestContext,flowScope.phoneRegistration)" />
<transition on="success" to="successView"/>
<transition on="error" to="handleAuthenticationFailure"/>
</action-state>
<action-state id="handleAuthenticationFailure">
<evaluate expression="icloudFlowExceptionHandler.handle(currentEvent.attributes.error, messageContext)" />
<transition on="BadSafeCodeException" to="viewRegisterForm" />
</action-state>
<end-state id="successView" view="casPhoneRegisterSuccessView" />
</flow>1. ICloudPhoneRegistration 页面接收对象
2. initialICloudFlowSetupAction 初始化 ,页面刷新触发
3. viewRegisterForm view绑定
doSend 发送短信验证码 resetStatus 重置短信发送的状态
4. checkSMSVerifyCode validate="true"(有校验)
doCheckSMSVerifyCode 检查短信验证码
5. userRegistration
doPhoneRegister 用户手机注册
6. handleAuthenticationFailure 权限认证###2.ICloudPhoneRegistration
继承ICloudEmailRegistration
接收页面对象
/**
* 姓名
*/
private String username;
/**
* 单位名
*/
private String companyname;
新增 这两个字段及get,set方法###3.ICloudUser
返回数据库对象
/**
* 姓名
*/
private String username = StringUtils.EMPTY;
/**
* 单位名
*/
private String companyname = StringUtils.EMPTY;
新增 这两个字段及get,set方法###4.工作流
工作流中view绑定
<binding property="username"/>
<binding property="companyname"/>
<binding property="email"/>
注:<binding property="email"/> 绑定页面的内容,去掉,会初始化默认的邮箱地址(受之前代码影响)###5.PhoneRegistrationValidator
手机注册第一次校验
validate方法
//对新增的username和companyname进行常规验证
if (!ValidatorUtils.validateUsername(reg.getUsername(), errors,
"username")) {
return;
}
if (!ValidatorUtils.validateCompanyname(reg.getCompanyname(), errors,
"companyname")) {
return;
}6.registrationViaFormAction 工作流
用户手机注册:
doPhoneRegister(final RequestContext context,
final ICloudPhoneRegistration registration):###5.1ValidatorUtils
public static boolean validateUsername(String username, Errors errors, String fieldName){
// 验证username是否为空
if(username.isEmpty()){
errors.rejectValue(fieldName, "required.username");
return false;
}
// 检查是否含有非法字符
if(!CASCommonUtils.checkSQLInject(username)){
errors.rejectValue(fieldName, "illegal.character");
return false;
}
// 检查username格式
if(!CASCommonUtils.checkParameterFormat(username)){
errors.rejectValue(fieldName, "invalid.username");
return false;
}
return true;
}
public static boolean validateCompanyname(String companyname, Errors errors, String fieldName){
// 验证username是否为空
if(companyname.isEmpty()){
errors.rejectValue(fieldName, "required.companyname");
return false;
}
// 检查是否含有非法字符
if(!CASCommonUtils.checkSQLInject(companyname)){
errors.rejectValue(fieldName, "illegal.character");
return false;
}
// 检查username格式
if(!CASCommonUtils.checkParameterFormat(companyname)){
errors.rejectValue(fieldName, "invalid.companyname");
return false;
}
return true;
}
昵称,姓名,单位名称,校验有点重复###5.2MessageCode.
USERSERVICE_VALIDATEUSERNAME_ILLEGAL, // 姓名不符合规则
USERSERVICE_VALIDATECOMPANYNAME_ILLEGAL, // 单位名不符合规则3.casPhoneRegisterView
userService
注册手机用户
registPhoneUser(ICloudPhoneRegistration user):
1. StringUtils.isEmpty(user.getUsername()) || StringUtils.isEmpty(user.getCompanyname())
2. // 姓名验证
validateMessage = validateUserName(user.getUsername());
if (null != validateMessage) {
result.setMessageCode(validateMessage);
return result;
}
// 单位名称验证
validateMessage = validateCompanyName(user.getCompanyname());
if (null != validateMessage) {
result.setMessageCode(validateMessage);
return result;
}
// 邮箱验证
validateMessage = validateEmail(user.getEmail());
if (null != validateMessage) {
result.setMessageCode(validateMessage);
return result;
}###userDao
根据传入的索引字段,查询用户信息(邮箱或昵称)
getICloudUser(String username):
icloudUser.setUsername(rs.getString("username"));
icloudUser.setCompanyname(rs.getString("companyname"));
通过手机号来查询用户信息
getICloudUserByPhoneNumber(String phoneNumber):
icloudUser.setUsername(rs.getString("username"));
icloudUser.setCompanyname(rs.getString("companyname"));
根据userid来获取用户信息
getICloudUser(int uid):
icloudUser.setUsername(rs.getString("username"));
icloudUser.setCompanyname(rs.getString("companyname"));
增加手机新用户
addNewPhoneUser:
stmt.setString(7, reg.getUsername());
stmt.setString(8, reg.getCompanyname());
private static final String NEW_PHONE_REGISTRATION_SQL =
"insert into users(email,encrypted_password,created_at,updated_at,confirmed_at,current_sign_in_ip,nickname,source,tel,username,companyname) values (?,?,now(),now(),now(),?,?,?,?,?,?)"sql:
private static final String NEW_PHONE_REGISTRATION_SQL = "insert into users(email,encrypted_password,created_at,updated_at,confirmed_at,current_sign_in_ip,nickname,source,tel) values (?,?,now(),now(),now(),?,?,?,?)";
改:
insert into users(email,encrypted_password,created_at,updated_at,confirmed_at,current_sign_in_ip,nickname,source,tel,username,companyname) values (?,?,now(),now(),now(),?,?,?,?,?,?)##二、前端
###1.页面修改
####1.新增姓名和单位名,再加邮箱名,再调整顺序
jsp
casPhoneRegisterView.jsp
<%--姓名--%>
<div class="mt15">
<label for="username" class="register_label"><spring:message code="CasRegistererView_Form_Username"/></label>
<spring:message code="CasRegistererView_Form_UsernameTip" var="usernameTip"/>
<form:input id="username" name="username" type="text" placeholder='${usernameTip}'
path="username" cssErrorClass="input_wrong" />
</div>
<%--单位名--%>
<div class="mt15">
<label for="companyname" class="register_label"><spring:message code="CasRegistererView_Form_Companyname"/></label>
<spring:message code="CasRegistererView_Form_CompanynameTip" var="usernameTip"/>
<form:input id="companyname" name="companyname" type="text" placeholder='${usernameTip}'
path="companyname" cssErrorClass="input_wrong"/>
</div>
<%--邮箱--%>
<div class="mt15">
<label for="email" class="register_label"><spring:message code="CasRegistererView_Form_Email" /></label>
<spring:message code="CasRegistererView_Form_EmailTip" var="emailTip"/>
<form:input id="email" name="email" type="text" placeholder='${emailTip}'
path="email" cssErrorClass="input_wrong"/>
</div>
2. label的code就是 显示的字
viewResource.properties
viewResource_zh.properties
viewResource_en.properties
viewResource.properties和viewResource_zh.properties都是中文:
CasRegistererView_Form_Username=姓名
CasRegistererView_Form_Companyname=单位名
CasRegistererView_Form_VerifyCode=短信验证码(原来的)
CasRegistererView_Form_VerifyCode=验证码
Top_Common_Register=注册超图账号
viewResource_en.properties是英文:
CasRegistererView_Form_Username=Username
CasRegistererView_Form_Companyname=Company
CasRegistererView_Form_VerifyCode=验证码
邮箱本来就有2.输入框默认内容
每个输入框默认内容:
如:input里placeholder='${usernameTip}'
viewResource.properties
CasRegistererView_Form_NicknameTip=中英文、数字或下划线组成,不区分大小写(本来就有)
CasRegistererView_Form_UsernameTip=您的姓名
CasRegistererView_Form_CompanynameTip=您的单位名
CasRegistererView_Form_EmailTip=您的邮箱
CasRegistererView_Form_passwordTip=长度为6至30位,不可含有空格(原本的)
CasRegistererView_Form_passwordTip=长度为6-30位,不含空格(改后)
CasRegistererView_Form_PhoneTip=中国大陆手机号(本来就有,3个properties都有)
CasRegistererView_Form_VerifyCodeTip=请输入验证码
js:
关掉了:鼠标离开焦点,placeholder不显示的特效
register.js
注释213,217-220 关掉输入框placeholder的昵称事件
user.js
注释508,509 关掉输入框placeholder的密码事件,切换以前设置的js中文,,(错误**,如果错误了,再写对无法对先前错误的消除)
解决:casUI.js
$password.removeClass(iSuperMap.Users.CSS.WRONGInput).attr("placeholder",
iSuperMap.Lang.CasTip.TIP_PASSWORD_PATTERN);
$password.removeClass(iSuperMap.Users.CSS.WRONGInput);
注释474 密码失去焦点,移除placeholder的事件###2.注册样式
住:修改regist.css和common.css
注意common.css会对其他页面有影响,所以采用新增
1.input输入框(考虑)
register.css的3行
.sso_block input[type="text"],.sso_block input[type="password"]{ width:355px;}
.sso_block input[type="text"],.sso_block input[type="password"]{
width: 281px;
}2.input输入框内容字体(考虑)
D:\supermap\ideaworkspaces\UserAccount\accounts\src\main\webapp\style\common.css的67行
.sso_block input, .input_authNum {
box-sizing: inherit;
font-size: 15px;
padding-left: 15px;
color: #666666;
margin-top: 10px;
border: 1px solid #c5c5c5;
border-radius: 6px 6px 6px 6px;
height: 35px;
line-height: 35px;
transition: all 0.1s ease-in 0s;
}
.sso_block input, .input_authNum {
box-sizing: inherit;
font-size: 12px;
padding-left: 12px;
color:rgba(153,153,153,1);
margin-top: 10px;
height: 32px;
line-height:24px;
transition: all 0.1s ease-in 0s;
font-weight:400;
border:1px solid rgba(219,219,219,1);
border-radius:2px;
font-family: Microsoft YaHei;
}####1.注册整体调整
D:\supermap\ideaworkspaces\UserAccount\accounts\src\main\webapp\style\common.css的43行添加
.width447{ width:447px; margin-left:auto;margin-right:auto;}
.width782{ width:782px; margin-left:230px;margin-right:auto;}
casPhoneRegisterView.jsp的23行
<div class="width447 pt50">
<div class="width782 pt50">####2.让label和input并行
css
1. 是label变为行内块,让它和input并行
D:\supermap\ideaworkspaces\UserAccount\accounts\src\main\webapp\style\register.css的2行
.register_label{display:block;}
.register_label{display:inline-block;}
2. 调整整个输入框位置
common.css的58行
.sso_block{ width:369px;border:1px solid #dfdfdf; border-top:none; border-bottom-color:#f2f2f2; box-shadow:0 1px 1px #ececec; padding:25px 38px 42px 38px; border-radius:0 0 6px 6px;}
.sso_block_phone{ width:450px;border:1px solid #dfdfdf; border-top:none; border-bottom-color:#f2f2f2; box-shadow:0 1px 1px #ececec; padding:25px 38px 42px 38px; border-radius:0 0 6px 6px;margin: 0 auto;}
**********会导致登录页面也变动
regist.css新增15行
.sso_block_regist{width: 450px}
casPhoneRegisterView.jsp的34行
<div class="sso_block mb75">
<div class="sso_block_regist sso_block mb75">
3.给label一个宽,对齐整个label
register.css的2行
.register_label{display:inline-block;}
.register_label{display:inline-block;width: 48px;text-align: right;}
4.label和input拉开24px
register.css的3行
.sso_block input[type="text"],.sso_block input[type="password"]{ width:355px;}
.sso_block input[type="text"],.sso_block input[type="password"]{width: 355px;margin-left: 24px;}
5.注册按钮有浮动对齐
register.css的14行
#registerButton {width:350px;height:40px;}
#registerButton {width:350px;height:40px;float: right;}
6.同意对齐
register.css的5行
.register_p{font-size:14px;color:#888888;text-shadow: 0 0 1px #cccccc;}
.register_p{font-size:14px;color:#888888;text-shadow: 0 0 1px #cccccc;margin-left: 80px;}####3.input上下间距调整
html
casPhoneRegisterView.jsp的输入框的
昵称——验证码
<div class="mt25">
<div class="mt15">
协议
<div class="mt10">
<div class="mt25">
注册按钮
<div class="mt25">####4.发送验证按钮调整
css
register.css的13行
#getVerifyCode {float:right;margin-top:10px;height:37px;}
#getVerifyCode {float:right;margin-top:14px;height:37px;}####5.去掉邮箱和手机来回切换的
html
casPhoneRegisterView.jsp的24-33行
<%--<ul class="register_title">
<li id="orEmail" class="register_orEmail">
<span><img src="img/login/email_login.png"/></span>
<a href="register"><spring:message code="CasRegistererView_Form_Oremail"/></a>
</li>
<li id="orPhone" class="register_orPhone register_active">
<span><img src="img/login/phone_login.png"/></span>
<a href="javascript:;"><spring:message code="CasRegistererView_Form_Orphone"/></a>
</li>
</ul>--%>####6.去掉boder边框
参照第2个的2个
common.css的58行
.sso_block{ width:369px;border:1px solid #dfdfdf; border-top:none; border-bottom-color:#f2f2f2; box-shadow:0 1px 1px #ececec; padding:25px 38px 42px 38px; border-radius:0 0 6px 6px;}
.sso_block{ width:450px; border-top:none; border-bottom-color:#f2f2f2; box-shadow:0 1px 1px #ececec; padding:25px 38px 42px 38px; border-radius:0 0 6px 6px;margin: 0 auto;}
新增
register.css的15行
.sso_block_regist{width: 450px;border: none;box-shadow: none;}###7.字体颜色
超图软件用户服务协议
register.css的4行
.register_blue{ color:#3498db;}
.register_blue{ color:#0081E2;}###3.跳转问题
####1.注册跳转问题
跳转是默认往邮箱页面跳转
web.xml
sso的登录往注册跳:
top_common.jsp的22行
<a href="register"><spring:message code="Top_Common_Register"/></a>
<a href="phoneregister"><spring:message code="Top_Common_Register"/></a>
暂时
online主站(待解决)####2.默认用手机登录
jsp
casLoginView.jsp的24-31行
调换顺序,及默认用手机:原因:
lastLoginType =='PHONE_TYPE' ? '' : 'login_active'
一开始没赋值,所以为false
<li id="orPhone" class="login_orPhone ${lastLoginType =='PHONE_TYPE' ? '' : 'login_active'}">
<span><img src="img/login/phone_login.png"/></span>
<spring:message code="CasLoginView_Login_OrPhone"/>
</li>
<li id="orEmail" class="login_orEmail ${lastLoginType =='PHONE_TYPE' ? 'login_active' : ''}">
<span><img src="img/login/email_login.png"/></span>
<spring:message code="CasLoginView_Login_OrEmail"/>
</li>
RemeberLoginTypeAction.java
UsernamePasswordCredential.java的41行
private ICloudUserType loginType = ICloudUserType.EMAIL_TYPE;(原来是邮箱)
private ICloudUserType loginType = ICloudUserType.PHONE_TYPE;
loginWindow.css
.login_orEmail {padding-right:10px; border-right:1px solid #242424;}
.login_orEmail {padding-left:10px; border-left:1px solid #242424;}##三.校验
###1.前端校验
####1.姓名
js
1. register.js的229-232行
// 姓名blur事件
$('#realName').blur(function() {
iSuperMap.Users.nickNameController($(this));
});
2. users.js的617-634行
消除左右空格,判断空值和错误,检测,
/*
* 姓名输入控制器 $realName:姓名input框对象
*
*/
iSuperMap.Users.realNameController = function($realName) {
var realName = $realName.val();
realName = $.trim(realName);
$realName.val(realName);
var tip, correct;
if (realName !== "" && !$realName.hasClass(iSuperMap.Users.CSS.WRONGInput)) {
tip = iSuperMap.Users.checkRealName(realName);
if (tip !== "OK") {
$realName.attr("content", realName).val(tip);
}
correct = tip === "OK" ? true : false;
iSuperMap.Users.inputStyleController($realName, correct);
}
};
3.users.js的635-658行
/*
*
* 验证姓名是否合法 realName:姓名值 return: 合法:OK,不合法:错误提示
*/
iSuperMap.Users.checkRealName = function(realName) {
var realNameLength = iSuperMap.Common.countStringByte(realName);
if (!iSuperMap.REGEXP.RN.test(realName)) {
return iSuperMap.Lang.CasTip.WRONG_REALNAME_PATTERN;
} else if (realNameLength < 4 || realNameLength > 30) {
return iSuperMap.Lang.CasTip.WRONG_NICKNAME_LENGTH;
}
// 暂时禁用blur时提示是否存在20150411
/*
* else{ var status;
* iSuperMap.Register.checkNickNameExist(nickName).done(function(data){
* switch(data.status){ case "success": status="OK"; break; case "fail":
* status=iSuperMap.Lang.CasTip.EXIST_NICKNAME); break; case "error":
* status=iSuperMap.Lang.CasTip.ERROR_CONNECT); } }).fail(function(){
* status=iSuperMap.Lang.CasTip.ERROR_CONNECT); }); return status; }
*/
else {
return "OK";
}
};
4.
casUI.js
casUI_zh.js
casUI_en.js
WRONG_REALNAME_PATTERN : '不可含除英文、汉字、数字以外字符',
WRONG_REALNAME_LENGTH : '请设置长度为4至30位(汉字占两位)',
5.global.js的32行
//姓名格式(英文字母、数字、汉字)
RN: /^[a-zA-Z0-9\u4E00-\u9FA5]+$/,####2.单位名
js
1. register.js的233-236行
// 单位名blur事件
$('#company').blur(function() {
iSuperMap.Users.nickNameController($(this));
});
2. users.js的659-676行
/*
* 单位名输入控制器 $company:单位名input框对象
*
*/
iSuperMap.Users.companyController = function($company) {
var company = $company.val();
company = $.trim(company);
$company.val(company);
var tip, correct;
if (company !== "" && !$company.hasClass(iSuperMap.Users.CSS.WRONGInput)) {
tip = iSuperMap.Users.checkCompany(company);
if (tip !== "OK") {
$company.attr("content", company).val(tip);
}
correct = tip === "OK" ? true : false;
iSuperMap.Users.inputStyleController($company, correct);
}
};
3. users.js的677-691行
/*
*
* 验证单位名是否合法 company:单位名值 return: 合法:OK,不合法:错误提示
*/
iSuperMap.Users.checkCompany = function(company) {
var companyLength = iSuperMap.Common.countStringByte(company);
if (!iSuperMap.REGEXP.RN.test(company)) {
return iSuperMap.Lang.CasTip.WRONG_COMPANY_PATTERN;
} else if (companyLength < 4 || companyLength > 100) {
return iSuperMap.Lang.CasTip.WRONG_COMPANY_LENGTH;
}
else {
return "OK";
}
};
4.
casUI.js
casUI_zh.js
casUI_en.js
WRONG_COMPANY_PATTERN : '不可含除英文、汉字、数字、下划线以外字符',
WRONG_COMPANY_LENGTH : '请设置长度为4至100位(汉字占两位)',
5.global.js的32行
//单位名格式(英文字母、数字、汉字和下划线)
CP: /^[a-z\w\u4E00-\u9FA5]+$/###2.后端校验
1.PhoneRegistrationValidator.java
java
//对新增的realName,company和email进行常规验证
if (!ValidatorUtils.validateRealName(reg.getRealName(), errors,
"realName")) {
return;
}
if (!ValidatorUtils.validateCompany(reg.getCompany(), errors,
"company")) {
return;
}
if (!ValidatorUtils.validateEmail(reg.getEmail(), errors,
"email")) {
return;
}####2.ValidatorUtils
java
public static boolean validateNickname(String nickname, Errors errors, String fieldName){
// 验证nickname是否为空
if(nickname.isEmpty()){
errors.rejectValue(fieldName, "required.nickname");
return false;
}
// 检查是否含有非法字符
if(!CASCommonUtils.checkSQLInject(nickname)){
errors.rejectValue(fieldName, "illegal.character");
return false;
}
// 检查nickname格式
if(!CASCommonUtils.checkParameterFormat(nickname)){
errors.rejectValue(fieldName, "invalid.nickname");
return false;
}
return true;
}
public static boolean validateRealName(String realName, Errors errors, String fieldName){
// 验证realName是否为空
if(realName.isEmpty()){
errors.rejectValue(fieldName, "required.realName");
return false;
}
// 检查是否含有非法字符
if(!CASCommonUtils.checkSQLInject(realName)){
errors.rejectValue(fieldName, "illegal.character");
return false;
}
// 检查realName格式
if(!CASCommonUtils.checkParameter(realName)){
errors.rejectValue(fieldName, "invalid.realName");
return false;
}
return true;
}
public static boolean validateCompany(String company, Errors errors, String fieldName){
// 验证company是否为空
if(company.isEmpty()){
errors.rejectValue(fieldName, "required.company");
return false;
}
// 检查是否含有非法字符
if(!CASCommonUtils.checkSQLInject(company)){
errors.rejectValue(fieldName, "illegal.character");
return false;
}
// 检查company格式
if(!CASCommonUtils.checkParameterFormat(company)){
errors.rejectValue(fieldName, "invalid.company");
return false;
}
return true;
}3.CASCommonUtils.java(提取)
java
/**
* 格式检查,匹配数字、英文、中文和下划线的组合
*
* @param arg0
* @return true:格式匹配 false:格式不匹配
*/
public static boolean checkParameterFormat(String arg0,String fieldName) {
String nicknameRegex = "^[a-z\\w\\u4E00-\\u9FA5]+$";
String realNamestrRegex = "^[a-zA-Z0-9\\u4E00-\\u9FA5]+$";
String companystrRegex = nicknameRegex;
if("nickname".equals(fieldName)){
return matchParameter(arg0,nicknameRegex);
}
if("realName".equals(fieldName)){
return matchParameter(arg0,realNamestrRegex);
}
if("company".equals(fieldName)){
return matchParameter(arg0,companystrRegex);
}
return false;
}
private static boolean matchParameter(String arg0,String strRegex){
Pattern filter = Pattern.compile(strRegex);
Matcher match = filter.matcher(arg0);
return match.matches();
}####3.CASCommonUtils.java
java
/**
* 格式检查,匹配数字、英文、中文的组合
*
* @param arg0
* @return true:格式匹配 false:格式不匹配
*/
public static boolean checkParameter(String arg0) {
String strRegex = "^[a-zA-Z0-9\\u4E00-\\u9FA5]+$";
Pattern filter = Pattern.compile(strRegex);
Matcher match = filter.matcher(arg0);
return match.matches();
}####4.userservice.java
/**
* 验证姓名
* @param value
* @return
*/
public MessageCode validateRealName(String value) {
MessageCode messageCode = null;
int length = CASCommonUtils.calculateStringLength(value);
if (length < 4 || length > 30) {
LOGGER.info("validateRealName length error:"+value+" length:"+length);
messageCode = MessageCode.USERSERVICE_VALIDATEREALNAME_ILLEGALLENGTH;
}else if (!CASCommonUtils.checkParameter(value)) {
try {
String str = new String(value.getBytes("iso-8859-1"), "utf-8");
LOGGER.info("USERSERVICE_VALIDATEREALNAME_ILLEGAL: "+value+" zhuanhuan: "+str);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
messageCode = MessageCode.USERSERVICE_VALIDATEREALNAME_ILLEGAL;
}
return messageCode;
}
/**
* 验证单位名称
* @param value
* @return
*/
public MessageCode validateCompany(String value) {
MessageCode messageCode = null;
int length = CASCommonUtils.calculateStringLength(value);
if (length < 4 || length > 100) {
LOGGER.info("validateCompany length error:"+value+" length:"+length);
messageCode = MessageCode.USERSERVICE_VALIDATECOMPANY_ILLEGALLENGTH;
}else if (!CASCommonUtils.checkParameterFormat(value)) {
try {
String str = new String(value.getBytes("iso-8859-1"), "utf-8");
LOGGER.info("USERSERVICE_VALIDATEREALNAME_ILLEGAL: "+value+" zhuanhuan: "+str);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
messageCode = MessageCode.USERSERVICE_VALIDATECOMPANY_ILLEGAL;
}
return messageCode;
}5.MessageCode.java
java
USERSERVICE_VALIDATEREALNAME_ILLEGALLENGTH, // 姓名长度不符合规范
USERSERVICE_VALIDATEREALNAME_ILLEGAL, // 姓名不符合规则
USERSERVICE_VALIDATECOMPANY_ILLEGALLENGTH, // 单位名长度不符合规范
USERSERVICE_VALIDATECOMPANY_ILLEGAL, // 单位名不符合规则69 CasRegistererView_Form_EmailTip=您的邮箱
71 CasRegistererView_Form_NicknameTip=中英文、数字或下划线组成,不区分大小写
73 CasRegistererView_Form_passwordTip=长度为6-30位,不含空格
78-82行
CasRegistererView_Form_RealName=姓名
CasRegistererView_Form_RealNameTip=您的姓名
CasRegistererView_Form_Company=单位名
CasRegistererView_Form_CompanyTip=您的单位名
CasRegistererView_Form_VerifyCodeTip=请输入验证码四、修改
前端
1. 设计样式
2. 英文界面样式
3. 中英字体
4. 改制表符
5. 主站跳转
后端
userService 邮箱 ||
校验catch