java 单点登录 cookie_java cookie 单点登录和登录拦截器 从实现到原理

public class LoginServiceImpl implementsLoginService {private static final Logger logger = Logger.getLogger(LoginServiceImpl.class);/*** 业务模块-用户Manager接口*/

privatePerUsersManager perUsersManager;/*** 业务模块- 登录票据Manager接口*/

privateLoginTicketManager loginTicketManager;/*** 业务模块 - 系统接口*/

privatePerSysManager perSysManager;/*** 默认失效时间是1个月,单位是秒*/

private Long expireTime = 30 * 24 * 3600l;

@Overridepublic Result login(LoginParam loginParam, booleanpdDecrpty) {

Result result= newResult();try{//验证参数是否为空,为空返回自定义错误信息(Code 、 Message)

if (null ==loginParam|| !StringUtils.validateStringNotNull(loginParam.getUserCode())|| !StringUtils.validateStringNotNull(loginParam.getUserPd())

) {

result.setSuccess(false);

result.setResultCode(LoginConstants.WS_PARAM_OBJ_NULL_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_OBJ_NULL_MESSAGE);returnresult;

}

PerUsers perUsers=perUsersManager.getUserPd(loginParam.getUserCode());if (perUsers != null) {if (perUsers.getUserStatus() == null || perUsers.getUserStatus() == 1) {

result.setSuccess(false);

result.setResultCode(LoginConstants.WS_PARAM_USER_STATUS_ERROR_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_USER_STATUS_ERROR_MESSAGE);returnresult;

}

String userPd=loginParam.getUserPd();//把明文密码+随机盐加密和数据库里取到的密码进行比较,如果相同登录成功

String successPwd =UserPdEncryptUtils.encryPd(userPd, perUsers.getSalt());//登录成功,返回

if(successPwd.equals(perUsers.getUserPd())) {

LoginTicket loginTicket= newLoginTicket();long nowTime =System.currentTimeMillis();long expire = nowTime + expireTime * 1000;

loginTicket.setExpireTime(newDate(expire));

loginTicket.setUserCode(perUsers.getUserCode());

loginTicket.setCreateUser(perUsers.getUserCode());

loginTicket.setUpdateUser(perUsers.getUserCode());

loginTicket.setTicket(createTicket());

loginTicketManager.insertLoginTicket(loginTicket);

result.setSuccess(true);

result.setResultCode(BaseConstants.SERVICE_RESULT_SUCCESS_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_OBJ_DEFAULT_KEY,

loginTicket.getTicket());

}else{

result.setSuccess(false);

result.setResultCode(LoginConstants.WS_PARAM_USER_ERROR_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_USER_ERROR_MESSAGE);returnresult;

}

}else{

result.setSuccess(false);

result.setResultCode(LoginConstants.WS_PARAM_USER_ERROR_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_USER_ERROR_MESSAGE);returnresult;

}

}catch(Exception e) {

logger.error("LoginServiceImpl!login -> error!!", e);

result.setSuccess(false);

result.setResultCode(LoginConstants.SERVICE_RETURN_FALSE_CODE);

}returnresult;

}

@OverridepublicResult verifyTicket(TicketParam ticketParam) {

Result result= newResult();try{//验证参数是否为空,为空返回自定义错误信息(Code 、 Message)

if (null ==ticketParam|| !StringUtils.validateStringNotNull(ticketParam.getTicket())

) {

result.setSuccess(false);

result.setResultCode(LoginConstants.WS_PARAM_OBJ_NULL_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_OBJ_NULL_MESSAGE);returnresult;

}

LoginTicket loginTicket=loginTicketManager.getLoginTicket(ticketParam.getTicket());if (loginTicket == null) {

result.setSuccess(false);

result.setResultCode(LoginConstants.WS_PARAM_TICKET_ERROR_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_TICKET_ERROR_MESSAGE);returnresult;

}if (loginTicket.getExpireTime().before(newDate())) {

result.setSuccess(false);

result.setResultCode(LoginConstants.WS_PARAM_TICKET_ERROR_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_TICKET_ERROR_MESSAGE);returnresult;

}

PerUsers perUsers=perUsersManager.getPerUsers(loginTicket.getUserCode());if (perUsers == null) {

result.setSuccess(false);

result.setResultCode(LoginConstants.WS_PARAM_TICKET_ERROR_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_TICKET_ERROR_MESSAGE);returnresult;

}if (perUsers.getUserStatus() == null || perUsers.getUserStatus() == 1) {

result.setSuccess(false);

result.setResultCode(LoginConstants.WS_PARAM_USER_STATUS_ERROR_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_USER_STATUS_ERROR_MESSAGE);returnresult;

}

PerUsersDto perUsersVo= newPerUsersDto();

perUsersVo.setId(perUsers.getId());

perUsersVo.setUserCode(perUsers.getUserCode());//设置页面需要的对象

result.setResultCode(BaseConstants.SERVICE_RESULT_SUCCESS_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_OBJ_DEFAULT_KEY, perUsersVo);

result.setSuccess(true);

}catch(Exception e) {

logger.error("LoginServiceImpl!login -> error!!", e);

result.setSuccess(false);

}returnresult;

}

@OverridepublicResult loginOut(TicketParam ticketParam) {

Result result= newResult();try{//验证参数是否为空,为空返回自定义错误信息(Code 、 Message)

if (null ==ticketParam|| !StringUtils.validateStringNotNull(ticketParam.getTicket())

) {

result.setSuccess(false);

result.setResultCode(LoginConstants.WS_PARAM_OBJ_NULL_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_OBJ_NULL_MESSAGE);returnresult;

}

LoginTicket loginTicket= newLoginTicket();//loginTicketManager.getLoginTicket(ticketParam.getTicket());

if (loginTicket == null) {

result.setSuccess(false);

result.setResultCode(LoginConstants.WS_PARAM_TICKET_ERROR_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_MESSAGE_DEFAULT_KEY, LoginConstants.WS_PARAM_TICKET_ERROR_MESSAGE);returnresult;

}

LoginTicket update= newLoginTicket();

update.setUpdateUser(loginTicket.getUserCode());

update.setTicket(loginTicket.getTicket());//loginTicketManager.deleteTicket(update);//设置页面需要的对象

result.setResultCode(BaseConstants.SERVICE_RESULT_SUCCESS_CODE);

result.addDefaultModel(BaseConstants.SERVICE_RETURN_OBJ_DEFAULT_KEY, BaseConstants.SERVICE_RESULT_SUCCESS_MESSAGE);

result.setSuccess(true);

}catch(Exception e) {

logger.error("LoginServiceImpl!loginOut -> error!!", e);

result.setSuccess(false);

}returnresult;

}private String createTicket() throwsNoSuchAlgorithmException {returnDigestUtils.md5(RandomTokenUtils.createToken());

}public voidsetExpireTime(Long expireTime) {this.expireTime =expireTime;

}public voidsetPerUsersManager(PerUsersManager perUsersManager) {this.perUsersManager =perUsersManager;

}public voidsetLoginTicketManager(LoginTicketManager loginTicketManager) {this.loginTicketManager =loginTicketManager;

}public voidsetPerSysManager(PerSysManager perSysManager) {this.perSysManager =perSysManager;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值