当前位置: 首页 > news >正文

网站制作大概费用网络推广平台有哪些

网站制作大概费用,网络推广平台有哪些,谷歌搜索引擎下载安装,低价网站制作1. 什么是Token? 身份验证令牌(Authentication Token):在身份验证过程中,“token” 可以表示一个包含用户身份信息的令牌。 例如 Token(JWT)是一种常见的身份验证令牌,它包含用户的…

1. 什么是Token?

在这里插入图片描述

身份验证令牌(Authentication Token):在身份验证过程中,“token”
可以表示一个包含用户身份信息的令牌。

例如

  1. Token(JWT)是一种常见的身份验证令牌,它包含用户的身份信息(例如用户名或用户ID)以及其他相关信息,如权限或过期时间。
  2. 无意义令牌token,这种一般在获取后通过nosql查询token对应的用户信息。

当然,设计token网上大多有现成的解决方案,但是通过token如何拿个人信息呢?

2. 如何优雅的获取用户信息?

虽然token是用户凭证,但是在后端中,token是不能直接和数据进行交互的,我们需要转换成token用户信息。

解决思路:

我们大多会在过滤器filter进行token检验,在这里我们已经已经从header中解析并且验证了token了。如果我们要是再在Controller中获取header,在解决,感觉一点也不优雅。
在这里插入图片描述
我们的两种解决方案:

  1. 通过header进行解析(推荐):

哈哈哈,没想到我们还是从这种low的方法里弄的吧。 实际上nosql性能很不错,再查一次也无伤大雅,并且这种方式耦合度较低,符合代码规范。

我们可以通过注解的方式,可以尽量美观很多
1.1. 创建CurrentUserUuid接口

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface CurrentUserUuid {
}

1.2. 创建oginUserHandlerMethodArgumentResolver解析器
在这里插入图片描述

@Component
public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {@Resourceprivate TokenUtil tokenUtil;@Overridepublic boolean supportsParameter(MethodParameter parameter) {return parameter.hasParameterAnnotation(CurrentUserUuid.class) &&parameter.getParameterType().isAssignableFrom(String.class);}@Overridepublic Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container,NativeWebRequest request, WebDataBinderFactory factory) {// header中获取用户tokenString token = request.getHeader("Authorization");// TODO 根据userId获取User信息,这里省略,直接创建一个User对象。return tokenUtil.getUserToken(token);}
}
  1. 过滤器二次封装请求体

我们可以在第一次过滤器查的时候,把对应的信息封装到请求中,但是请求多变,get,post参数一般在不同的位置上,需要写更复杂的结构

@Override	
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)	throws IOException, ServletException {	HttpServletRequest httpRequest = (HttpServletRequest) request;	HttpServletResponse httpResponse = (HttpServletResponse) response;	String token = request.getHeader("token");	JWTResult result = JWTUtils.checkToken(token);	Long userId = result.getUserId();	HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper(httpRequest) {	@Override	public String[] getParameterValues(String name) {	if (name.equals("loginUserId")) {	return new String[] { userId .toString() };	}	return super.getParameterValues(name);	}	@Override	public Enumeration<String> getParameterNames() {	Set<String> paramNames = new LinkedHashSet<>();	paramNames.add("loginUserId");	Enumeration<String> names =  super.getParameterNames();	while(names.hasMoreElements()) {	paramNames.add(names.nextElement());	}	return Collections.enumeration(paramNames);	}	};	chain.doFilter(requestWrapper, httpResponse);	
}

这种好处是只需要查一次,但是请求参数多变,需要写很多额外的解构去处理,并且增加了耦合度

3. 总结

我还是推荐方法1,无疑,虽然多查一次,但是结构简单,耦合度低,并且代码较为简洁。

http://www.yayakq.cn/news/53624/

相关文章:

  • 湖州网站建设哪家好网站 手机 app
  • 绵阳公司商务网站制作博文阅读网站建设
  • 为什么需要建设网站wordpress如何设置内容页
  • 烟台建设用地规划查询网站成都网站建设四川冠辰科技
  • 网站怎么做电脑系统佛山全市核酸检测
  • 网站地图制作做窗帘网站图片
  • 绍兴网站建设解决方案北京网站搭建方案
  • 西安网站建设有那些公司好大地资源在线观看视频在线观看
  • 一个网站可以做几个关键词wordpress redis插件
  • 永嘉营销网站建设成都那家网站建设好
  • 做资源网站需要什么软件网页布局排版
  • php 网站共享变量两个wordpress单点登录
  • 桂林微信网站如何去除痘痘效果好
  • 贵阳建设工程招投标网站网站设计的主要特点
  • 汕头建站平台成都专业做网站公司哪家好
  • 免费p2p网站建设深圳做网站要多少钱
  • 银川公司网站建设成都网站定制建设
  • asp+php+jsp网站开发成都哪里好玩适合年轻人
  • 免费申请网站空间及域名空间ip地址访问网站
  • 为什么做网站ppt北京网站设计研究与开发公司
  • wordpress建一个网站吗舞台灯光网站建设
  • 怎样下载模板做网站网页设计与制作教程课后答案第三版
  • 扬中新网网门户网站优化怎么做
  • 百度网站关键词和网址wordpress 4.2 zh cn
  • 什么网站做h5好网站建设进度计划
  • 1688企业网站建设营销策划的六个步骤
  • 扬州哪里做网站好苏州高端网站制作机构
  • 网站免费维护建立网站网站建设套餐服务
  • 响应式网站设计公司做生物学的网站
  • 湖北建设网官方网站国内app公司排名