实现sessionfilter_session应用--采用filter和session实现简单用户权限控制
前面有讲到一些session的基础知识点,这里那我们就将session和filter做结合,实现一个简单地应用处理用于一般后端管理程序的权限控制!
①我们先建立一个filter的实现类SecurityServlet,简单代码如下:import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
public class SecurityServlet extends HttpServlet implements Filter {
private static final long serialVersionUID = 1L;
private FilterConfig filterConfig;
private List exclusions = new ArrayList();
private static Logger logger = Logger.getLogger(SecurityServlet.class);
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
Object userinfos = session.getAttribute("unionid");
String url = req.getRequestURI();
if (filter(url)) { 包含以*.js,*.gif,*.jpg,*.png,*.css,*.ico结尾的不做任何处理
chain.doFilter(request, response);
} else { //否则进行权限判断,如果存在session则进入正常访问,否则进入登录页面
if (userinfos == null || "".equals(userinfos)) {
res.sendRedirect("/user/toindex"); //权限不够,跳转至登录页面
} else {
chain.doFilter(request, response); //权限正常,可以访问
}
}
}
//采用xml配置方式设置不过滤的参数初始化如:
//
//exclusions
//*.js,*.gif,*.jpg,*.png,*.css,*.ico 包含以*.js,*.gif,*.jpg,*.png,*.css,*.ico结尾的不做任何处理
//
public void init(FilterConfig config) throws ServletException {
this.filterConfig = config;
String exclu = filterConfig.getInitParameter("exclusions");
logger.error(exclu);
if (null != exclu) {
String[] exclus = exclu.split(",");
for (int i = 0; i
exclusions.add(exclus[i]);
}
}
}
//直接在这里设置不进行过滤的url请求
public Boolean filter(String url) {
// 包含以*.js,*.gif,*.jpg,*.png,*.css,*.ico结尾的不做任何处理
if (url.indexOf(".js") != -1 || url.indexOf(".jpg") != -1
|| url.indexOf(".png") != -1 || url.indexOf(".gif") != -1
|| url.indexOf(".css") != -1 || url.indexOf(".ico") != -1
|| url.indexOf("login") != -1 || url.indexOf("toindex") != -1|| url.indexOf("gettk") != -1) {
return true;
} else {
return false;
}
}
}
②登录login和session设置实现,这里我们依然用上一篇中简单session设置的方法实现:/**
* @Description: 用户oauth授权登录
* @param @param request
* @param @param response
* @param @param code
* @param @param state
* @param @return
* @author dapengniao
* @date 2016年1月13日 下午3:59:14
*/
@RequestMapping("login")
public ModelAndView UserOAuthLogin(ModelAndView view,
HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "code", required = false) String code,
@RequestParam(value = "state", required = false) String state) {
OauthCode_GetUseInfo oauth = new OauthCode_GetUseInfo(code);
try {
UserInfo userinfos = oauth.getUserInfo();//通过公用方法用code获取用户基本信息
request.getSession().setAttribute("unionid",userinfos.getUnionid()); //将用户unionid缓存到session
request.getSession().setAttribute("petname",
userinfos.getNickname()); //将昵称缓存到session
view.setViewName("index");
return view;
} catch (Exception e) {
logger.error(e, e);
return view;
}
}
③我们需要将我们写好的filter加入到我们的项目启动中,所以我们需要在我们的web.xml中加入配置,如下:
SecurityServlet
com.cuiyongzhi.filter.SecurityServlet
exclusions
*.js,*.gif,*.jpg,*.png,*.css,*.ico
SecurityServlet
/*
到这里我们采用session和filter去实现简单的权限控制就已经实现完成了,这里给出的是代码片段,感谢翻阅,如有疑问可以留言讨论!
除非注明,否则文章均由 崔用志博客 整理发布,欢迎转载。
如果喜欢,可以点此订阅本站
实现sessionfilter_session应用--采用filter和session实现简单用户权限控制相关推荐
- jsp页面从session获取当前用户信息控制页面按钮是否显示
<c:if test="${sessionScope.org.id == 43}"><li onclick="openCheckDialog()&quo ...
- JAVA--利用Filter和session防止页面重复提交
JAVA–利用Filter和session防止页面重复提交 解决思路: 1 用户访问表单页面,先经过过滤器,过滤器设置一个随机id作为token令牌, 并将该token放入表单隐藏域中. 2 表单响应 ...
- 整合Mybatis、Servlet、Mysql、Axios、Filter、Session写一个入门级项目:非常适合初接触JavaWeb的小白白来进阶
文章目录 写在前言 写作收获&目的 目录结构 1 依赖配置 1.1 创建一个Web项目 1.2 Pom.xml 2 配置Mybatis 2.1 Mybatis-config.xml 2.2 U ...
- Spring Filter过滤器,Spring拦截未登录用户权限限制
实现的功能:判断用户是否已登录,未登录用户禁止访问任何页面或action,自动跳转到登录页面. 比较好的做法是不管什么人都不能直接访问jsp页面,要访问就通过action,这样就变成了一个实实在在的权 ...
- 微服务权限控制(二)共享Session方式的登录认证
接上一篇的权限控制,再讨论再网关zuul的登录认证实现. 网关使用SpringCloud的zuul,登录认证选择使用自定义共享session的方式,来实现集群的登录验证.保护接口的私密,保证系统安全. ...
- Day239.RBAC模式、动态加载用户权限资源规则数据规则、【记住我】注销多次登录图片验证码session验证码验证功能 -springsecurity-jwt-oauth2
1.RBAC权限管理模型 一.RBAC权限模型简介 RBAC权限模型(Role-Based Access Control)即:基于角色的权限控制.模型中有几个关键的术语: 用户:系统接口及功能访问的操 ...
- 使用filter过滤器实现简单用户登录验证(不用配置web.xml文件)
一.filter过滤器的作用 如果想要获取中文字符,或者是显示提交的中文,就需要添加以下代码,来防止乱码的情况发生. request.setCharacterEncoding("utf-8& ...
- 用于读、写、删除、比较Session中的用户信息的类库。
/// <summary> /// 用于读.写.删除.比较Session中的用户信息. /// </summary> [Serializable] ...
- Springboot整合Websocket遇到的坑_websocket session不支持序列化,无法存储至redis_Websocket相关问题总结(Session共享,用户多端登录等)
Springboot整合Websocket遇到的坑 一.使用Springboot内嵌的tomcat启动websocket 1.添加ServerEndpointExporter配置bean @Confi ...
最新文章
- 基于MTCNN的人脸自动对齐技术原理及其Tensorflow实现测试
- 数据中台建设是噱头还是黑科技?
- CodeForces - 1426F Number of Subsequences(dp)
- php向下滑动,js如何判断鼠标滚轮是向下还是向上滚动
- 信息学奥赛一本通(1011:甲流疫情死亡率)
- Linux版本的安装文件jdk,tomcat
- 卡巴斯基亚太区总经理:不做免费杀毒厂商
- linux内核五大部分,Linux内核的五大模块
- (转)淘淘商城系列——服务调用测试
- java jquery ajax_[Java教程]jquery ajax 使用
- c语言回调函数_【云里雾里】回调函数与钩子函数
- 王长震《非财务经理的财务管理沙盘推演课程》
- 提高智商、改善记忆力的120种绝佳方法!
- HTML如何长截图谷歌,『技巧』如何利用Chrome进行网页长截图
- RPL(5):RFC6550翻译(5)---ICMPv6 RPL控制报文
- 计算机软件对英语,计算机软件英语论文
- 更好的 java 重试框架 sisyphus 入门简介
- [转]《数学之美》 阅读笔记
- Oracle出现 ins 35075提示的解决方法
- 计算机毕业论文选题申请表,毕业设计论文课题申请表.DOC
热门文章
- 模板匹配matchTemplate
- Python字符串的编码与解码(encode与decode)
- MongoDB 问题123
- AUTOSAR从入门到精通番外篇(三)-嵌入式中设计模式的艺术
- Android布局动态化,一种基于堆积木思想的卡片式Android动态布局方法与流程
- 浙大计算机硕士比本科985,二本出身的985研究生与985本科生,哪个更厉害?网友:差的太多!...
- 一个用于伪造IP地址进行爆破的BurpSuite插件:BurpFakeIP
- 哥斯拉Webshell
- 本地项目antd 修改.less文件导致内存溢出
- umi config.js整体defineConfig配置