NutzCN Logo
问答 accesstokenfilter什么时候把acesstoken放到redis的?
发布于 2550天前 作者 qq_64f81159 1729 次浏览 复制 上一个帖子 下一个帖子
标签:

看了下代码,accesstokenfilter根据传入的参数制造了一个key和传入的Api-Key做比较,制造这个key的关键除了传入的参数,还有一个参数accesstoken是从reids中读取的?那这个accesstoken是啥时候放入进去的呢,是无论pc端还是移动端登陆了就放入redis还是只有移动端登陆的时候放入?

	@Aop("redis")
	public String accessToken(UserProfile profile) {
		String loginname = profile.getLoginname();
		String at = jedis().hget(RKEY_USER_ACCESSTOKEN, loginname);
		if (at == null) {
			// 双向绑定
			at = R.UU32();
			jedis().hset(RKEY_USER_ACCESSTOKEN, loginname, at);
			jedis().hset(RKEY_USER_ACCESSTOKEN2, at, loginname);
			jedis().hset(RKEY_USER_ACCESSTOKEN3, at, ""+profile.getUserId());
		}
		return at;
	}

这个是放入的方法。。
还有就是加入redis重启那accesstoken不就会消失吗?那造成的结果不就是移动端要重新登陆(如果redis是单redis)

7 回复

redis有持久化

那accesstoken是啥时候放到redis的?

这是nutzcn 的代码?

nutz-book-project-master

上述代码里面的 hset不就放进去了?

if (yvrService == null)
			yvrService = ac.getIoc().get(YvrService.class);
		HttpServletRequest req = ac.getRequest();
		String at = req.getParameter("accessToken");
		if (req.getHeader("Api-Version") != null) {
			String loginname = req.getHeader("Api-Loginname");
			String nonce = req.getHeader("Api-Nonce");
			String key = req.getHeader("Api-Key");
			String time = req.getHeader("Api-Time");
			if (Strings.isBlank(loginname) || Strings.isBlank(nonce) || Strings.isBlank(key) || Strings.isBlank(time)) {
				return new UTF8JsonView(JsonFormat.compact()).setData(Result.error("缺少参数"));
			}

			if (!yvrService.checkNonce(nonce, time)){
				return new UTF8JsonView(JsonFormat.compact()).setData(Result.error("错误"));
			}
			at = yvrService.getAccessToken(loginname);
			if (Strings.isBlank(at)) {
				return new UTF8JsonView(JsonFormat.compact()).setData(Result.error("accessToken错误"));
			}
			String tmp = Strings.join(",", at, loginname, nonce, time);
			String _key = Lang.sha1(tmp);
			log.debug("tmp="+tmp);
			log.debug("_key=" + _key);
			log.debug(" key=" + key);
			if (!_key.equals(key)) {
				return new UTF8JsonView(JsonFormat.compact()).setData(Result.error("Api-Key错误"));
			}
		}
		return new UTF8JsonView(JsonFormat.compact()).setData(Result.error("Api-Version不能为空!"));
	}

这个传入的key我怎么知道是多少?这个不是accesstoken,accesstoken 不就是at = R.UU32();吗 。

你得下载nutzcn的客户端了

你最初贴代码,就是展示二维码的代码,扫码之后记录在客户端的

添加回复
请先登陆
回到顶部