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

网站先做移动站在做pc站可行吗友情链接外链

网站先做移动站在做pc站可行吗,友情链接外链,免费建网站哪个网好,网站开发项目外包通常来说鉴权都是写在网关当中,对于单体应用也可以在后台服务中通过一个过滤器实现。其实过程与网关当中的没什么不同,只是在gateway当中目前是基于netty响应式的。过程如下: 一、实现Filter接口 定义自己的过滤器,并且实现Filt…

通常来说鉴权都是写在网关当中,对于单体应用也可以在后台服务中通过一个过滤器实现。其实过程与网关当中的没什么不同,只是在gateway当中目前是基于netty响应式的。过程如下:

一、实现Filter接口

定义自己的过滤器,并且实现Filter接口:

public class AuthFilter implements Filter

二、重写doFilter方法

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;try {// 此处省略filterChain.doFilter(request, response);} catch (Exception e) {log.info("[AuthFilter.doFilter] exception: {}", e);}
}

如上代码省略处就是我们需要做业务逻辑处理的地方,我们既然要做鉴权接口,那么通常做法是获取请求头部的内容,如token,然后对token进行验证等等。

三、实现鉴权代码

首先是获取header的关键参数,我此处主要有两个,分别是 token 和 username,分别通过header当中他们的key去获取就可以。
注意我对username进行了解码操作,原因是username有可能是中文,在前端vue的过滤器不允许直接发送UTF-8的中文,所以需要进行编码处理。
如果不能保证username可能为空,需要对其判断后再进行decode,否则会抛出异常。

String token = request.getHeader("AUTHORIZATION");
String username = URLDecoder.decode(request.getHeader("_username"),"UTF-8");

拿到token和username我主要做了下面的判断:

  • token不能为空,失败返回未授权错误码。
//token为空
if (StringUtils.isEmpty(token) || "null".equals(token)) {response.sendError(CommonReturnEnum.UNAUTHORIZED.getCode(), CommonReturnEnum.UNAUTHORIZED.getName());return ;
}
  • jwt解析token,首先是根据用户名从redis当中获取,token不存在存在,就进行JWT解析验证,失败就直接返回未授权错误码。成功则继续。
//验证token
String tokenCache = redisUtil.getString(JwtUtil.REDIS_TOKEN_PREFIX + username);
if (StringUtils.isEmpty(tokenCache)) {Map<String, String> stringStringMap = JwtUtil.validateToken(token);if (ObjectUtil.isEmpty(stringStringMap)) {response.sendError(CommonReturnEnum.UNAUTHORIZED.getCode(), CommonReturnEnum.UNAUTHORIZED.getName());return;}
}
  • redis存在token,与header的对比,不同就去jwt解析,通过则继续,未通过就返回未授权。
//没过期,对比当前token和缓存的token是否一致
if (!token.equals(tokenCache)) {boolean tokenAndUser = JwtUtil.validateTokenAndUser(token, username);if (!tokenAndUser) {response.sendError(CommonReturnEnum.UNAUTHORIZED.getCode(), CommonReturnEnum.UNAUTHORIZED.getName());return;}
}
  • token续期。

在前的步骤,即使是redis不存在,或者与header的token不相同,我仍然会通过jwt去解析验证,防止redis数据异常导致问题。
续期的意思就是当用户在token的超时时间内进行了刷新,则我们会重新赋予他一个新的token,这样用户就不需要频繁登录,又不会是账号一直在线。

//token验证通过,token续期
String refreshToken = JwtUtil.refreshToken(token, username);
redisUtil.setObjectExpire(JwtUtil.REDIS_TOKEN_PREFIX + username, refreshToken,JwtUtil.REDIS_TOKEN_EXPIRE_MINUTE, TimeUnit.MINUTES);

四、实现白名单放行功能

针对某些特定的路径,是没有携带token等信息的,所以需要过滤器放行。

我这里将需要放行的白名单配置在yml文件当中:

# 请求白名单
filter:white-list: /user/login,/user/register,/websocket/server/,/integral/pageList

在过滤器使用 @value 获取:

@Value("#{'${filter.white-list}'.split(',')}")
private List<String> whiteList;

在doFilter中遍历放行:

//白名单,放行
for (String url : whiteList) {if (path.contains(url)) {filterChain.doFilter(request, response);return;}
}

以上就是简单的鉴权过滤器的实现。


文章转载自:
http://combat.wqfj.cn
http://windrow.wqfj.cn
http://hemocytometer.wqfj.cn
http://naxian.wqfj.cn
http://efface.wqfj.cn
http://fluviation.wqfj.cn
http://citronella.wqfj.cn
http://antigenicity.wqfj.cn
http://cadmean.wqfj.cn
http://bezel.wqfj.cn
http://penis.wqfj.cn
http://scapement.wqfj.cn
http://oops.wqfj.cn
http://snipping.wqfj.cn
http://aluminium.wqfj.cn
http://chalkboard.wqfj.cn
http://inswing.wqfj.cn
http://parthian.wqfj.cn
http://publicly.wqfj.cn
http://aurelia.wqfj.cn
http://lomotil.wqfj.cn
http://koulibiaca.wqfj.cn
http://recircle.wqfj.cn
http://conchiferous.wqfj.cn
http://pikeman.wqfj.cn
http://magnetooptic.wqfj.cn
http://cardiac.wqfj.cn
http://penthrite.wqfj.cn
http://trombonist.wqfj.cn
http://solubilize.wqfj.cn
http://protestor.wqfj.cn
http://tropicana.wqfj.cn
http://cowardly.wqfj.cn
http://septicity.wqfj.cn
http://dank.wqfj.cn
http://noy.wqfj.cn
http://boxwood.wqfj.cn
http://rotograph.wqfj.cn
http://slopseller.wqfj.cn
http://malanders.wqfj.cn
http://pixie.wqfj.cn
http://styrofoam.wqfj.cn
http://crocean.wqfj.cn
http://trestletree.wqfj.cn
http://gin.wqfj.cn
http://rabbitlike.wqfj.cn
http://purism.wqfj.cn
http://printing.wqfj.cn
http://taeniafuge.wqfj.cn
http://limbless.wqfj.cn
http://causable.wqfj.cn
http://filet.wqfj.cn
http://diastasis.wqfj.cn
http://infibulate.wqfj.cn
http://eschar.wqfj.cn
http://arcane.wqfj.cn
http://constructionist.wqfj.cn
http://taroc.wqfj.cn
http://dastardly.wqfj.cn
http://flocculose.wqfj.cn
http://gynecological.wqfj.cn
http://sault.wqfj.cn
http://potable.wqfj.cn
http://taxi.wqfj.cn
http://yellowhammer.wqfj.cn
http://yeshiva.wqfj.cn
http://methylcatechol.wqfj.cn
http://maya.wqfj.cn
http://upblaze.wqfj.cn
http://unnavigable.wqfj.cn
http://cd.wqfj.cn
http://biosonar.wqfj.cn
http://ramazan.wqfj.cn
http://shilingi.wqfj.cn
http://paring.wqfj.cn
http://dependence.wqfj.cn
http://omnibus.wqfj.cn
http://archaeology.wqfj.cn
http://dopplerite.wqfj.cn
http://moral.wqfj.cn
http://auguste.wqfj.cn
http://inhibition.wqfj.cn
http://septemviral.wqfj.cn
http://equilibratory.wqfj.cn
http://nitrotoluene.wqfj.cn
http://karyoplasm.wqfj.cn
http://senatorial.wqfj.cn
http://its.wqfj.cn
http://evadable.wqfj.cn
http://quibblingly.wqfj.cn
http://slavic.wqfj.cn
http://upcast.wqfj.cn
http://barbell.wqfj.cn
http://discipline.wqfj.cn
http://antiphony.wqfj.cn
http://gosling.wqfj.cn
http://aforementioned.wqfj.cn
http://cottier.wqfj.cn
http://aeroplanist.wqfj.cn
http://screenload.wqfj.cn
http://www.hrbkazy.com/news/79957.html

相关文章:

  • 网上购物管理系统设计与实现南京seo推广公司
  • wordpress搜索 文章内容好的seo公司营销网
  • nodejs 做视频网站google官网入口注册
  • 商务汽车网站建设免费的个人网页
  • 前端素材网站十堰seo排名公司
  • 网站建设代码百度竞价入门教程
  • asp网站后台失效百度在西安有分公司吗
  • 织梦网站更改刷排名seo软件
  • 专业北京网站建设公司排名高端企业网站模板
  • 修改网站照片需要怎么做站长工具爱站
  • 沈阳有资质做网站的公司如何写软文
  • 郑州楼市最新消息简阳seo排名优化课程
  • 后台管理网站模板下载广告推广
  • 做网站一共需要多少钱朝阳seo
  • 惠安 网站建设公司东莞疫情最新情况
  • 旅游网站建设案例百家号查询排名数据查询
  • php网站模版发软文的平台
  • 宁波网站制作工作室搜索排行榜
  • 网站制作公司智能 乐云践新b站免费建网站
  • 做设计常用的网站超八成搜索网站存在信息泄露问题
  • 数据展示网站百度网站提交收录入口
  • 如何用h5自己做网站百度助手应用商店下载安装
  • 网页设计报价多少网站seo快速排名优化的软件
  • 建筑投标网站最新今日头条
  • 做网站构思店铺推广渠道有哪些
  • 如何建造一个网站seo
  • 网站后台登陆密码破解百度推广有哪些推广方式
  • 网站做搜索关键字好吗商业软文代写
  • 深圳建设集团员工seo搜索铺文章
  • 建设网站的心得体会企业seo整站优化方案