//从header中获取token String token = request.getHeader(LOGIN_TOKEN_KEY); /** * 不需要验证权限的方法直接放过 */ if(annotation!=null) { return true; } TokenEntity tokenEntity = null; if(StringUtils.isNotBlank(token)) { tokenEntity = tokenService.getTokenEntity(token); } if(tokenEntity != null) { request.getSession().setAttribute("userId", tokenEntity.getUserid()); request.getSession().setAttribute("role", tokenEntity.getRole()); request.getSession().setAttribute("tableName", tokenEntity.getTablename()); request.getSession().setAttribute("username", tokenEntity.getUsername()); return true; } PrintWriter writer = null; response.setCharacterEncoding("UTF-8"); response.setContentType("application/json; charset=utf-8"); try { writer = response.getWriter(); writer.print(JSONObject.toJSONString(R.error(401, "请先登录"))); } finally { if(writer != null){ writer.close(); } } // throw new EIException("请先登录", 401); return false; } }代码解析
时间: 2023-06-26 07:07:20 浏览: 202
这段代码是一个拦截器,用于验证用户是否已经登录。首先从请求的header中获取token,如果该请求的方法被标记为不需要验证权限,则直接放过。如果获取到了token,则通过tokenService来获取对应的TokenEntity,并将用户的信息存入session中,然后返回true表示已验证通过。如果没有获取到token,则返回一个401错误,提示用户需要先登录。
其中,response.getWriter()用于获取输出流,然后将返回结果以JSON格式输出给客户端。如果在获取输出流的过程中抛出异常,会在finally中关闭输出流。
相关问题
String token = request.getHeader(LOGIN_TOKEN_KEY);
这段代码用于从HTTP请求头中获取登录令牌(Token)。具体来说,它通过request.getHeader(LOGIN_TOKEN_KEY)方法获取HTTP请求头中名为LOGIN_TOKEN_KEY的头部信息的值,即登录令牌的值,将其赋值给变量token。
登录令牌通常用于用户身份认证,当用户登录成功后,服务端会生成一个包含用户信息的令牌,并将其返回给客户端。客户端在后续的请求中,需要在HTTP请求头中携带该令牌,以便服务端进行用户身份认证。服务端通过获取HTTP请求头中的令牌,即可获取当前请求的用户信息,从而判断请求是否合法。
下面这代码是什么意思 // TODO 获取当前登录主办方的token String token = request.getHeader("token"); String tokenKey = LOGIN_USER_KEY + token; String companyname = String.valueOf(stringRedisTemplate.opsForHash().get(tokenKey, "companyName")); Page<Event> pageInfo = new Page(page,pageSize); Page<EventDto> eventDtoPage = new Page<>();
这段代码是一个用于分页查询的方法,具体意思如下:
1. 获取当前登录主办方的 Token
```
String token = request.getHeader("token");
```
2. 根据 Token 获取登录用户的信息
```
String tokenKey = LOGIN_USER_KEY + token;
String companyname = String.valueOf(stringRedisTemplate.opsForHash().get(tokenKey, "companyName"));
```
这里使用了 Redis 存储登录用户的信息,在 Redis 中通过 Token 找到对应的用户信息,其中 `LOGIN_USER_KEY` 为 Redis 中存储用户信息的键的前缀,`companyName` 是从用户信息中获取的公司名称。
3. 创建分页对象
```
Page<Event> pageInfo = new Page(page, pageSize);
```
这里使用了 Mybatis-Plus 中的分页对象 `Page`,传入当前页码和每页大小来创建一个分页对象。
4. 执行查询并返回结果
```
Page<EventDto> eventDtoPage = new Page<>();
```
这里创建了一个空的 `Page` 对象用于存放查询结果,具体的查询操作并没有在这段代码中体现。
综上所述,这段代码是一个用于分页查询的方法,其中包含了获取登录用户信息的操作,并使用了 Mybatis-Plus 的分页对象来进行分页查询。
阅读全文