Skip to content

12.23SSO已绑定邮箱显示

环境:

项目地址:D:\supermap\ideaworkspaces\UserAccount
访问地址:http://127.0.0.1/v101/account/manager/manager.do;jsessionid=DCB22738846EDF12FD8A1B6AE8DDB777?manager=accountInfo

项目

userManager.jsp		邮箱显示
UserStatusUtil.java     邮箱过滤判断
问题:
1.	数据库有email,返回前端false
	1.显示立即绑定,以此修改email
1.	数据库有email,返回前端true
	1.显示email,不能修改
	2.强制加立即绑定的a标签,修改不成功,已有账号

##一、项目修改

##第一种:

###1.UserStatusUtil.java

java
/**
	 * 根据邮箱来判断用户是否绑定过邮箱   修改为支持所有邮箱修改
	 * @param email
	 * @return
	 */
public static boolean isBoundEmail(String email) {
		if(StringUtils.isBlank(email)) {//邮箱为空,说明没有绑定过邮箱
			return false;
		}
		if(email.indexOf(CASConstants.THIRD_PARTY_LOGIN_SUFFIX) != -1) {//第三方用户的邮箱类型,说明用户没有绑定过邮箱
			return false;
		}
		if(email.indexOf(CASConstants.PHONE_PARTY_LOGIN_SUFFIX) != -1) {//手机用户的邮箱类型,说明用户没有绑定过邮箱
			return false;
		}
		
		if(Pattern.matches(DITUHUI_REGEX, email)) {//匹配到地图慧那边的邮箱类型,说明用户没有绑定过邮箱
			return false;
		}
		return true;
	}

2.userManager.jsp

html
77 - 84

<c:if test="${!isBoundEmail}">
					<li class="mt15">
						<lable class="f16"><spring:message code="usermanager_not_bound_mailbox"/></lable>
						<a class="f16 userManager_binding" href="./emailModify.jsp"><spring:message code="usermanager_now_binding"/>
						<img class="vm height18" src="../resources/img/userManager/icon_email.png" /></a>
					</li>
				</c:if>
				<c:if test="${isBoundEmail}">
					<li class="mt15 userManager_btn_disabled">
						<lable class="f16"><spring:message code="usermanager_bound_mailbox"/></lable>
						<a class="f16 userManager_binding" href="./emailModify.jsp">${processedEmail}
						<!--<lable class="f16">${processedEmail}</lable>-->
						<img class="vm height18" alt="" src="../resources/img/userManager/icon_email.png" /></a>
					</li>
				</c:if>

###3.注释'已有邮箱判断'

java
注释两个判断1.点击'发送验证码' 2.点击邮箱连接

isBoundEmail
AccountManager.java下sendBindingUrlToMailBox
//绑定过邮箱的话,不能发送绑定链接
    	if(UserStatusUtil.isBoundEmail(user.getEmail())) {
    		addDatasToModelAndView(mv, ViewConstants.SENDEMAIL_FAILD, getMessage(CasManagerResource.CURRENT_ACCOUNT_EMAIL_BOUND));
    		return mv;
    	}
RegisterValidationAction.java 	下doBindUserInfo 159
// 如果用户绑定过邮箱,那就不能再次绑定
			if (UserStatusUtil.isBoundEmail(user.getEmail())) {
				context.getFlowScope().put("isSuccess", isSuccess);
				context.getFlowScope()
						.put("result",
								messageSource
										.getMessage(MessageCode.CURRENT_ACCOUNT_EMAIL_BOUND));
				return new Event(this, "error");
			}

第二种:

jsp
userManager.jsp

<c:if test="${!isBoundEmail}">
					<c:if test="${!processedEmail}">
						<li class="mt15">
							<lable class="f16"><spring:message code="usermanager_not_bound_mailbox"/></lable>
							<a class="f16 userManager_binding" href="./emailModify.jsp"><spring:message code="usermanager_now_binding"/>
								<img class="vm height18" src="../resources/img/userManager/icon_email.png" /></a>
						</li>
					</c:if>
					<c:if test="${processedEmail}">
						<li class="mt15 userManager_btn_disabled">
							<lable class="f16"><spring:message code="usermanager_bound_mailbox"/></lable>
							<a class="f16 userManager_binding" href="./emailModify.jsp">${processedEmail}
								<!--<lable class="f16">${processedEmail}</lable>-->
								<img class="vm height18" alt="" src="../resources/img/userManager/icon_email.png" /></a>
						</li>
					</c:if>
				</c:if>
				<c:if test="${isBoundEmail}">
					<li class="mt15 userManager_btn_disabled">
						<lable class="f16"><spring:message code="usermanager_bound_mailbox"/></lable>
						<lable class="f16">${processedEmail}</lable>
						<img class="vm height18" alt="" src="../resources/img/userManager/icon_email.png" />
					</li>
				</c:if>
java
AccountManager.java initModelViweBasicInfo

if(!isBoundEmail) {
				mv.addObject(AccountManagerConstants.PROCESSED_EMAIL, "".equals(user.getEmail())?null:CommonUtils.getEncodeEmail(user.getEmail()));
			}

###4.缓存

AccountManager.java 下 sendBindingUrlToMailBox

user.setEmail(bindingInfo.getBindingParam());