filter 实现登录状态控制
每天学习一点点 编程PDF电子书、视频教程免费下载:
http://www.shitanlife.com/code
网站需要做用户登录鉴权控制,没有登录的话,不能访问网站,提示需要登录。
实现方式: 使用Filter对每个请求地址进行过滤判断 session ,如果登录状态,则正常访问,否则,跳入提示界面。
实现步骤:
1. 定义过滤器类 LoginFilter
@Configuration
public class LoginFilter implements Filter
{
@Autowired
private RestTemplate restTemplate;
@Value("${twpaas.gateway.url:http://192.168.102.80:9000}")
private String gatewayUrl;
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterchain)
throws IOException, ServletException
{
HttpServletResponse httpResponse = (HttpServletResponse) response;
HttpServletRequest httpRequest = (HttpServletRequest)request;
HttpSession session = httpRequest.getSession();
if(httpRequest.getRequestURI().indexOf("noright") > 0)
{
filterchain.doFilter(request, response);
return;
}
if("1".equals(session.getAttribute("loginStatus")))
{
// 已登录
filterchain.doFilter(request, response);
return;
}
else
{
if(null != httpRequest.getParameter("token"))
{
JSONObject obj = restTemplate.getForEntity(gatewayUrl + "/openapi-uc/uc/getUserByToken/" + httpRequest.getParameter("token"), JSONObject.class).getBody();
if(null != obj)
{
Map<String, Object> entityMap = (Map<String, Object>) obj.get("responseEntity");
if(null != entityMap)
{
String userId = (String) entityMap.get("userId");
if(null != userId)
{
session.setAttribute("loginStatus", "1");
// 已登录
filterchain.doFilter(request, response);
return;
}
}
}
}
}
httpResponse.sendRedirect("/noright");
return;
}
@Override
public void destroy()
{
}
@Override
public void init(FilterConfig arg0) throws ServletException
{
}
}
2. 加入扫描路径,使用的是springboot, 在启动类中加入扫描路径 @ComponentScan ("xxx.xxx.xxx.**.**.filter")
以上逻辑就完成了。具体请看代码,应该还是看得懂的。
每天学习一点点 编程PDF电子书、视频教程免费下载:
http://www.shitanlife.com/code
filter 实现登录状态控制的更多相关文章
- AOP实践--利用MVC5 Filter实现登录状态判断
AOP有的翻译"面向切面编程",有的是"面向方面编程".其实名字不重要,思想才是核心,mvc的Filter让我们很 方便达到这种面向方面编程,就是在现有代码的基 ...
- Vue+Express实现登录状态权限控制
前提须知 对Vue全家桶有基本的认知. 拥有node环境 了解express 本篇只是介绍登录状态的权限验证,以及登录,注销的前后端http交互.前端布局,后端密码验证等以后有时间再对这些内容进行补充 ...
- Servlet过滤器---登录权限控制
实现了登录时权限控制:进入首页.登录页以及登录servlet时,不用验证权限:进入其它页面时,须验证是否登录,未登录则跳转到登录页. 一个简单的首页:index.jsp <%@ page lan ...
- 可在广域网部署运行的QQ高仿版 -- GG2014 完美版!新增支持:聊天记录、好友分组、托盘闪动消息提醒、登录状态、GIF动态表情
距上次GG V3.7版本(可在广域网部署运行的QQ高仿版 -- GG叽叽V3.7,优化视频聊天.控制更多相关细节)的发布,已经有50天了,这50天对于GG来说,是一个重大的飞跃.因为这段时间通过一些基 ...
- Struts2重新学习之自定义拦截器(判断用户是否是登录状态)
拦截器 一:1:概念:Interceptor拦截器类似于我们学习过的过滤器,是可以再action执行前后执行的代码.是web开发时,常用的技术.比如,权限控制,日志记录. 2:多个拦截器Interce ...
- springboot 前后端分离开发 从零到整(三、登录以及登录状态的持续)
今天来写一下怎么登录和维持登录状态. 相信登录验证大家都比较熟悉,在Javaweb中一般保持登录状态都会用session.但如果是前后端分离的话,session的作用就没有那么明显了.对于前后端分离的 ...
- SpringBoot29 登录逻辑、登录状态判断
1 知识点扫盲 浏览器和服务器之间时通过session来确定连接状态的,浏览器第一次请求时服务端会自动生成一个session,并将这个sessionId传回给浏览器,浏览器将这个sessionId存放 ...
- 2017.4.12 开涛shiro教程-第十八章-并发登录人数控制
原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 开涛shiro教程-第十八章-并发登录人数控制 shiro中没有提 ...
- 基于cookie的用户登录状态管理
cookie是什么 先来花5分钟看完这篇文章:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies 看完上文,相信大家对cookie已经有 ...
随机推荐
- js发送邮件确定email地址
<a href="mailto:wjl@tom.com?subject=aaa&body=11111">test</a>
- js之单例模式
单例模式是指一个类,只有一个实例.实现的思路是,创建实例时候加判断,如果有实例则返回,如果没有就new一个,并返回. 第一步: 创建类. function Waiter(id, name, salar ...
- Could not open input file: artisan 【Laravel初体验】
1,情景描述:在命令行窗口写入php artisan make:model Models\MenuModel用于创建模型时,出现此错误(Could not open input file: artis ...
- java ee,包括js,html,jsp等等知识整合
为了方便修改和后续的包装套路 首先用户访问的页面从web.xml找到 <welcome-file-list> <welcome-file>index.html</we ...
- 2016年 CodePen 最热门的前端代码 Top 100
每年 Codepen 都会公布年度最热门的代码片段,这些片段有的技术超弦,有的超实用.有的超有创意,有空看看都能给我们带来灵感. 同时从 Codepen 的代码上也能学习一些牛人的写法,不管是设[…… ...
- CSS3动画属性:变形(transform)
Transform字面上就是变形,改变的意思.在CSS3中transform主要包括以下几种:旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix. 语法 t ...
- [工具配置]requirejs 多页面,多入口js文件打包总结
需要明确以下几点: 1.本地前端调试代码肯定是调用原始的路径以及代码,但是线上运行的肯定是通过打包后的另一个路径,这儿就是生成的dist文件夹了. 2.requirejs的引入,线上跟线下的路径怎么控 ...
- 2018-08-13 Head First OO分析设计一书略读与例子中文化
注: 此笔记仅为个人学习此教程的布局和材料组织之用. 如有兴趣请自行详阅. 第一章是以吉他商店的存货系统作例子. 第二章设计有狗洞的门. 第三章对第二章基础上, 更改需求后对应设计. 第四章继续改进此 ...
- (网页)input框怎么覆盖掉数字英文的
例子1: <input type="text" value="0" onkeyup="cleartwoNum(this)"> / ...
- Android 7.0 fiddler代理抓不到https请求的解决办法
解决方法: 1.在源码res目录下新建xml目录,增加network_security_config.xml文件 (工程名/app/src/main/res/xml/network_security ...