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

视频网站 建设全球搜怎么样

视频网站 建设,全球搜怎么样,苏宁网站开发人员,网站建设 swot分析系列文章目录 Spring Boot读取配置文件内容的三种方式 Spring Boot自动配置–如何切换内置Web服务器 SpringBoot项目部署 上述为该系列部分文章,想了解更多可看我博客主页哦! 文章目录系列文章目录前言一、创建自定义过滤器LoginCheckFilter二、在启动类…

系列文章目录

Spring Boot读取配置文件内容的三种方式
Spring Boot自动配置–如何切换内置Web服务器
SpringBoot项目部署
上述为该系列部分文章,想了解更多可看我博客主页哦!


文章目录

  • 系列文章目录
  • 前言
  • 一、创建自定义过滤器LoginCheckFilter
  • 二、在启动类上加入注解@ServletComponentScan
  • 三、完善过滤器的处理逻辑
    • 3.1 获取本次请求的URI
    • 3.2 判断本次请求是否需要处理
    • 3.3 如果不需要处理,则直接放行
    • 3.4 判断登录状态,如果已登录,则直接放行
    • 3.5 未登录情况处理
  • 总结


前言

在我们实现完成登录校验功能后,当输入正确的用户名和密码就会跳转到首页,输入错误信息则不跳转首页。但是我们会发现不进行登录,直接在访问路径时直接访问首页的url路径也是可以访问的,就是不用输入用户名和密码也是可以访问首页的。那这样我们的登录功能做的就没有太大的意义。所以我们要进一步去拦截它,使得用户在不登录时访问不了其他的页面。这里就涉及到了今天的过滤器,当然拦截器也是可以实现的,我们这篇文章以过滤器为例来完善登录功能。使得用户在没有登录时访问其他页面时会自动跳回登录页面。


一、创建自定义过滤器LoginCheckFilter

首先要新建一个filter包,在filter包下创建LoginCheckFilter用来实现检查用户是否已经完成登录操作。
在该类上添加WebFilter注解(过滤的注解),里面的参数是filterName就是该过滤器的名字,urlPatterns是需要拦截的路径,这里因为是登录功能,所以我们urlPatterns = "/"表示拦截所有路径(“”通配符),在访问所有路径时都会进入这个函数进行逻辑处理。
然后实现Filter接口下的doFilter方法,将servletRequest、servletResponse强转为HttpServletRequest、HttpServletResponse用来后续做逻辑处理时会用到。
代码如下所示:

/**** 检查用户是否已经完成登录操作*/
@WebFilter(filterName = "loginCheckFilter",urlPatterns = "/*")
@Slf4j
public class LoginCheckFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;}
}

二、在启动类上加入注解@ServletComponentScan

@ServletComponentScan注解用来扫描你创建的自定义过滤器LoginCheckFilter,所以要在启动类上加上该注解才会生效。
代码如下所示:

@Slf4j
@SpringBootApplication@ServletComponentScan
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class,args);log.info("项目启动成功...");}
}

三、完善过滤器的处理逻辑

我们上述两个步骤已经是做完了准备工作,但最核心的如何判断用户是否登录,以及用户在访问什么页面时需要阻止等逻辑代码还没有编写。所以下面我们就来编写逻辑代码。
在filter包下创建的自定义过滤器LoginCheckFilter中编写核心代码。

3.1 获取本次请求的URI

首先我们要获取用户当前访问页面的URI。“/employee/logout”返回的就是这样的路径。
代码如下:

String requestURI = request.getRequestURI();

然后我们要定义出哪些路径是需要放行的,比如用户访问登录页面、静态资源、用户退出等。我们用一个字符串数组存起来。

//直接放行的路径String[] urls = new String[]{"/employee/login","/employee/logout","/backend/**","/front/**"};

3.2 判断本次请求是否需要处理

如果是上述直接放行的路径我们则不需要处理,不是上述字符串数组中的URI我们就需要做进一步的处理。
但我们怎么判断是不是呢?
问题:字符串数组中有"/backend/**"的通配符写法,但我们获取到的URI是固定的写法,例如“/backend/index.html”。这样就不能直接用等号所对比。
解决:根据上述问题,我们就有一个spring自带的用来处理路径匹配的方法AntPathMatcher,可以自动的做上述的匹配操作。
所以我们先初始化代码,如下:

public static final AntPathMatcher PATH_MATCHER=new AntPathMatcher();

编写匹配的逻辑,这里我们将检查是不是需要放行的逻辑放到了一个函数里,如果需要放行就返回true,不放行就返回false(表示字符串数组中的URI没有与之相同的,我们需要拦截)。
代码如下:

public boolean check(String[] urls,String requestURI){for (String url : urls) {boolean match = PATH_MATCHER.match(url, requestURI);if(match){return true;}}return false;}

3.3 如果不需要处理,则直接放行

这里就是字符串数组中匹配到与之相对的URI,我们需要放行。
代码如下:

if(check){filterChain.doFilter(request,response);return;}

3.4 判断登录状态,如果已登录,则直接放行

如果用户是已经登录状态,那么当然可以访问首页等页面,所以我们直接放行。就是获取session,查看session中是否有值,null就表示用户没有登录。
代码如下:

if(request.getSession().getAttribute("employee")!=null){filterChain.doFilter(request,response);return;}

3.5 未登录情况处理

如果上述的条件都没有满足,那么就是用户未登录。
则返回未登录结果,通过输出流方式向客户端页面响应数据(因为前端写好了跳转路径,所以我们就只需要返回满足前端代码跳转路径的条件即可。这里为了解释清楚,我们看一下前端的写法。)
前端代码如下:

 	if (res.data.code === 0 && res.data.msg === 'NOTLOGIN') {// 返回登录页面console.log('---/backend/page/login/login.html---')localStorage.removeItem('userInfo')window.top.location.href = '/backend/page/login/login.html'} else {return res.data}

通过上述的js代码,我们了解到如果满足条件code=0,msg为“NOTLOGIN”则会返回登录页面。所以我们只需要返回一个JSON字符串格式的数据,数据值为code = 0 并且msg ='NOTLOGIN’即可。
java代码如下:
注:R是自定义的返回结果类,返回的数据就包含了上述的code、msg。

	response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));return;

总结

上述就是过滤器完善登录功能的全部代码以及实现流程了,这样我们在未登录时访问首页就会自动跳转至登录页面要求用户登录。
实现起来其实也不算很难,只要记住那些技术要点即可,例如路径匹配AntPathMatcher,加什么注解等。还有就是逻辑处理的部分,将思路理顺后一步一步编写代码,每一小步的代码实现起来也不难,但合起来的整个逻辑需要仔细的查看理解。
这次的文章到这里就结束了,我是心态还需努力呀。我们下篇文章再见!


文章转载自:
http://flabbily.c7495.cn
http://promulgation.c7495.cn
http://shameful.c7495.cn
http://macroeconomic.c7495.cn
http://incontinently.c7495.cn
http://bolster.c7495.cn
http://earthling.c7495.cn
http://faithful.c7495.cn
http://androclus.c7495.cn
http://plaice.c7495.cn
http://peasantry.c7495.cn
http://ptfe.c7495.cn
http://placid.c7495.cn
http://facedown.c7495.cn
http://derogatorily.c7495.cn
http://longspur.c7495.cn
http://modeless.c7495.cn
http://lilacky.c7495.cn
http://drift.c7495.cn
http://unep.c7495.cn
http://meistersinger.c7495.cn
http://lxx.c7495.cn
http://zero.c7495.cn
http://demarcation.c7495.cn
http://opster.c7495.cn
http://clowder.c7495.cn
http://cumquat.c7495.cn
http://hangnail.c7495.cn
http://flabbily.c7495.cn
http://lacomb.c7495.cn
http://annual.c7495.cn
http://mousseux.c7495.cn
http://achievement.c7495.cn
http://conversant.c7495.cn
http://zoospore.c7495.cn
http://informal.c7495.cn
http://schitz.c7495.cn
http://unoffending.c7495.cn
http://arachnid.c7495.cn
http://transmissible.c7495.cn
http://movement.c7495.cn
http://intrapopulation.c7495.cn
http://alexandria.c7495.cn
http://unadopted.c7495.cn
http://dismayful.c7495.cn
http://brandied.c7495.cn
http://laitance.c7495.cn
http://underfinanced.c7495.cn
http://necrogenic.c7495.cn
http://microfolio.c7495.cn
http://spin.c7495.cn
http://ergograph.c7495.cn
http://unshakably.c7495.cn
http://daub.c7495.cn
http://owi.c7495.cn
http://prosciutto.c7495.cn
http://thorough.c7495.cn
http://humidifier.c7495.cn
http://wraac.c7495.cn
http://defluent.c7495.cn
http://anticodon.c7495.cn
http://grandiloquent.c7495.cn
http://rubbidy.c7495.cn
http://mesometeorology.c7495.cn
http://salicional.c7495.cn
http://tidytips.c7495.cn
http://nemesia.c7495.cn
http://slipup.c7495.cn
http://radiotelephony.c7495.cn
http://tine.c7495.cn
http://eulachon.c7495.cn
http://gavot.c7495.cn
http://arthropod.c7495.cn
http://motive.c7495.cn
http://logogriph.c7495.cn
http://bravest.c7495.cn
http://apteryx.c7495.cn
http://wonderworking.c7495.cn
http://decremeter.c7495.cn
http://wienie.c7495.cn
http://montaignesque.c7495.cn
http://regional.c7495.cn
http://admire.c7495.cn
http://newcome.c7495.cn
http://alternant.c7495.cn
http://esclandre.c7495.cn
http://squeaky.c7495.cn
http://confrontment.c7495.cn
http://squareness.c7495.cn
http://confusedly.c7495.cn
http://hipline.c7495.cn
http://featurish.c7495.cn
http://recontaminate.c7495.cn
http://rampage.c7495.cn
http://thumbtack.c7495.cn
http://reversely.c7495.cn
http://redundantly.c7495.cn
http://flanken.c7495.cn
http://pollinate.c7495.cn
http://flautist.c7495.cn
http://www.zhongyajixie.com/news/71289.html

相关文章:

  • 动态网站建设与管理长沙seo排名外包
  • 安庆市住房和建设厅网站西安网站搭建公司
  • 学网站开发要什么基础搜索引擎优化百度百科
  • 商业网站网址天津网站排名提升
  • gif表情包制作网站如何自制网站
  • 忆唐网不做网站做品牌100个成功营销策划案例
  • 网页建立网站平台推广网站源码
  • 网站规划的步acca少女网课视频
  • 西青做网站公司宁波的网络营销服务公司
  • 求一个做交通分析的底图网站中国搜索引擎
  • 上海上港微博微博杭州网站优化方案
  • 做网站 十万百度企业网盘
  • 给企业做网站用什么程序什么是搜索引擎优化
  • 山西手机响应式网站建设南昌seo排名扣费
  • 东莞网站建设推广公司太原seo培训
  • 网站建设有名的公司seo如何优化网站推广
  • 襄阳专业网站建设武汉seo关键词优化
  • 房地产开发公司名字宁波seo网络推广外包报价
  • 上海网站建设代码网站优化 秦皇岛
  • 扬中网站建设朋友圈广告推广文字
  • 自己做网站自己做SEO免费访问国外网站的app
  • 如何建立一个私人网站国内搜索网站排名
  • 自己做公众号引流到其他电影网站可以站长工具seo综合查询5g
  • 外贸独立网站做仿品新网站推广方法
  • 网站地图在线生成软文推广收费
  • 世界疫情最新数据排名表2022年网站怎么优化关键词
  • django 做网站赚钱免费网站制作教程
  • 网站佣金怎么做凭证许昌网络推广外包
  • 国外电商网站如何做icp备案seo快速排名外包
  • 浙江建设信息港网站查询分类信息网