前面有讲到一些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实现简单用户权限控制相关推荐

  1. jsp页面从session获取当前用户信息控制页面按钮是否显示

    <c:if test="${sessionScope.org.id == 43}"><li onclick="openCheckDialog()&quo ...

  2. JAVA--利用Filter和session防止页面重复提交

    JAVA–利用Filter和session防止页面重复提交 解决思路: 1 用户访问表单页面,先经过过滤器,过滤器设置一个随机id作为token令牌, 并将该token放入表单隐藏域中. 2 表单响应 ...

  3. 整合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 ...

  4. Spring Filter过滤器,Spring拦截未登录用户权限限制

    实现的功能:判断用户是否已登录,未登录用户禁止访问任何页面或action,自动跳转到登录页面. 比较好的做法是不管什么人都不能直接访问jsp页面,要访问就通过action,这样就变成了一个实实在在的权 ...

  5. 微服务权限控制(二)共享Session方式的登录认证

    接上一篇的权限控制,再讨论再网关zuul的登录认证实现. 网关使用SpringCloud的zuul,登录认证选择使用自定义共享session的方式,来实现集群的登录验证.保护接口的私密,保证系统安全. ...

  6. Day239.RBAC模式、动态加载用户权限资源规则数据规则、【记住我】注销多次登录图片验证码session验证码验证功能 -springsecurity-jwt-oauth2

    1.RBAC权限管理模型 一.RBAC权限模型简介 RBAC权限模型(Role-Based Access Control)即:基于角色的权限控制.模型中有几个关键的术语: 用户:系统接口及功能访问的操 ...

  7. 使用filter过滤器实现简单用户登录验证(不用配置web.xml文件)

    一.filter过滤器的作用 如果想要获取中文字符,或者是显示提交的中文,就需要添加以下代码,来防止乱码的情况发生. request.setCharacterEncoding("utf-8& ...

  8. 用于读、写、删除、比较Session中的用户信息的类库。

    /// <summary>     /// 用于读.写.删除.比较Session中的用户信息.     /// </summary>     [Serializable]    ...

  9. Springboot整合Websocket遇到的坑_websocket session不支持序列化,无法存储至redis_Websocket相关问题总结(Session共享,用户多端登录等)

    Springboot整合Websocket遇到的坑 一.使用Springboot内嵌的tomcat启动websocket 1.添加ServerEndpointExporter配置bean @Confi ...

最新文章

  1. 基于MTCNN的人脸自动对齐技术原理及其Tensorflow实现测试
  2. 数据中台建设是噱头还是黑科技?
  3. CodeForces - 1426F Number of Subsequences(dp)
  4. php向下滑动,js如何判断鼠标滚轮是向下还是向上滚动
  5. 信息学奥赛一本通(1011:甲流疫情死亡率)
  6. Linux版本的安装文件jdk,tomcat
  7. 卡巴斯基亚太区总经理:不做免费杀毒厂商
  8. linux内核五大部分,Linux内核的五大模块
  9. (转)淘淘商城系列——服务调用测试
  10. java jquery ajax_[Java教程]jquery ajax 使用
  11. c语言回调函数_【云里雾里】回调函数与钩子函数
  12. 王长震《非财务经理的财务管理沙盘推演课程》
  13. 提高智商、改善记忆力的120种绝佳方法!
  14. HTML如何长截图谷歌,『技巧』如何利用Chrome进行网页长截图
  15. RPL(5):RFC6550翻译(5)---ICMPv6 RPL控制报文
  16. 计算机软件对英语,计算机软件英语论文
  17. 更好的 java 重试框架 sisyphus 入门简介
  18. [转]《数学之美》 阅读笔记
  19. Oracle出现 ins 35075提示的解决方法
  20. 计算机毕业论文选题申请表,毕业设计论文课题申请表.DOC

热门文章

  1. 模板匹配matchTemplate
  2. Python字符串的编码与解码(encode与decode)
  3. MongoDB 问题123
  4. AUTOSAR从入门到精通番外篇(三)-嵌入式中设计模式的艺术
  5. Android布局动态化,一种基于堆积木思想的卡片式Android动态布局方法与流程
  6. 浙大计算机硕士比本科985,二本出身的985研究生与985本科生,哪个更厉害?网友:差的太多!...
  7. 一个用于伪造IP地址进行爆破的BurpSuite插件:BurpFakeIP
  8. 哥斯拉Webshell
  9. 本地项目antd 修改.less文件导致内存溢出
  10. umi config.js整体defineConfig配置