分布式构架中用户登陆的验证方式

之前在i西科的项目里看到了这样一段代码

注释里说的很清楚,就是用来验证用户登陆的。他这里用了登陆凭证的方式来验证登陆,而我之前写的项目里都是直接在服务器上保存session,于是我去查了一下这两种方式的区别,这里大致介绍一下。 

先来看使用session验证的代码:

请求体:

/**
 * 用户登陆请求体
 * 
 * @author xuLiang
 * @since 0.0.1
 */
public class UserLogin {
	private Long id;
	private String password;

getters and setters...
}

DAO层:

/**
	 * 
	 * 查找登陆用户账号密码是否匹配
	 * 
	 * @param userLogin
	 *            用户登陆请求体
	 * @return true or false
	 * @author xuLiang
	 * @since 0.0.1
	 */
	@Override
	public boolean findByIdAndPassword(UserLogin userLogin) {
		UsersRecord record = dsl.selectFrom(USERS)
				.where(USERS.ID.eq(userLogin.getId()).and(USERS.PASSWORD.eq(userLogin.getPassword()))).fetchOne();
		if (record != null) {
			return true;
		}
		return false;
	}

service层:

/**
	 * 
	 * 验证用户登陆
	 * 
	 * @param userLogin
	 *            用户登陆请求体
	 * @return true or false
	 * @author xuLiang
	 * @since 0.0.1
	 */
	@Override
	public boolean verifyLogin(UserLogin userLogin) {
		return usersMapper.findByIdAndPassword(userLogin);
	}

controller:

	/**
	 * 用户登陆验证
	 * 
	 * @param userLogin
	 *            用户登录请求体
	 * @return SESSION
	 * @author xuLiang
	 * @since 0.0.1
	 */
	@PostMapping("/loginVerify")
	@ResponseStatus(HttpStatus.OK)
	public String loginVerify(@RequestBody UserLogin userLogin, HttpSession session) {
		boolean verify = userPersonService.verifyLogin(userLogin);
		if (verify) {
			session.setAttribute(WebSecurityConfig.SESSION_KEY, userLogin.getId());
			return "index";
		}
		return "redirect:/login";
	}

       /**
	 * 用户登出移除session
	 * 
	 * @param userLogin
	 *            用户登录请求体
	 * @return SESSION
	 * @author xuLiang
	 * @since 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值