众所周知,如果没有对页面进行权限控制,用户只要输入URL就能进入任何页面。
下面就演示一下最基本的使用Fiter来控制页面的权限。
1.写一个FILTER,用来判断用户是否有权限进入指定页面。
java 代码
-
import java.io.IOException;
-
- 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;
-
- import com.kiral.action.UserAction;
- import com.kiral.model.User;
-
-
-
-
-
-
-
-
- public class FilterServlet extends HttpServlet implements Filter {
-
private static final long serialVersionUID = 5162189625393315379L;
-
-
private static Logger LOG = Logger.getLogger(FilterServlet.class);
-
-
-
-
-
private String allowRole = null;
-
-
-
-
-
private String redirectURl = null;
-
-
public void init(FilterConfig filterConfig) throws ServletException {
-
-
allowRole = filterConfig.getInitParameter("allowRole");
-
-
redirectURl = "/locker/index.html";
-
}
-
-
-
-
-
public void doFilter(ServletRequest sRequest, ServletResponse sResponse,
-
FilterChain filterChain) throws IOException, ServletException {
-
HttpServletRequest request = (HttpServletRequest) sRequest;
-
HttpServletResponse response = (HttpServletResponse) sResponse;
-
HttpSession session = request.getSession();
-
-
-
if (session.getAttribute(UserAction.CURRENT_USER) == null) {
-
response.sendRedirect(redirectURl);
-
}
-
-
else {
-
User user = (User) session.getAttribute(UserAction.CURRENT_USER);
-
try {
-
-
if ("0".equals(allowRole) || user.hasPower(allowRole)) {
-
filterChain.doFilter(sRequest, sResponse);
-
} else {
-
-
response.sendRedirect(redirectURl);
-
}
-
} catch (Throwable e) {
-
LOG.error("权限过滤时候出现错误", e);
-
throw new RuntimeException("权限过滤时候出现错误", e);
-
}
-
}
-
}
-
-
public void destroy() {
-
}
-
-
}
2.在web.xml中配置 要过滤的页面和能进入当前页面的角色
xml 代码
-
-
<filter>
-
<filter-name>UserAdminfilter-name>
-
-
<filter-class>com.emap.web.FilterServletfilter-class>
-
-
<init-param>
-
-
<param-name>allowRoleparam-name>
-
<param-value>1param-value>
-
init-param>
-
filter>
-
<filter-mapping>
-
<filter-name>UserAdminfilter-name>
-
<url-pattern>/jsp/security/*url-pattern>
-
filter-mapping>
上面配置的意思是说,当用户进入/jsp/security文件夹下的页面的时候,程序会进入FilterServlet 里的doFilter方法里,进行权限判断。
其他的页面权限控制:
1.你可以在filter里判断用户是否登录,然后需要特殊权限能访问的页面,在页面里进行判断。
2.推荐使用开源框架ACEGI来进行权限控制。
分享到:
相关推荐
Filter控制页面的访问权限Filter控制页面的访问权限Filter控制页面的访问权限
用filter对登录进行控制,如果想访问某个目录下的文件,必须先登录,如果没有登录会跳转到登录页面。username:fang,password:11
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin...
提供一系列标签库进行页面元素的安全控制 方法安全 通过AOP模式实现安全代理 Web安全与方法安全均可以使用表达式语言定义访问规则 5、配置SS 配置Web.xml,应用安全过滤器 配置Spring,验证与授权部分 在web页面中...
action:存放struts2控制类的包 dao:数据库访问封装 enm:系统中使用到的常量包,这里不是用的常量,用的是枚举替代常量 entity:hibernate对应的orm与数据库表一一对应的实体类 filter:Log4jFormatFilter(格式化...
对于纯粹的后端server而言,可能还需要自己实现一个生成错误json的filter来替换默认filter,因为默认filter会在权限验证失败时重定向至错误页面。 ## 日志处理 —— logback 无它,唯一需要配置的就是日志输出位置...
掌握开发中的简单权限控制 掌握前端页面如何与后端整合 宏观把握一个项目 掌握echarts图表技术 环境需要 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,...
(2)控制器使用Servlet分发请求控制,实现一个Servlet处理多个请求 (3)根据用户角色id,来判断是否显示哪些管理模块, 或者是否显示删除、增加和修改图标 (4)页面提取: 首页等页面的头部,左侧导航,底部 ...
5.3 使用Intent创建Tab页面 211 5.4 本章小结 212 第6章 Android应用的资源 213 6.1 资源的类型及存储方式 214 6.1.1 资源的类型以及存储方式 214 6.1.2 使用资源 216 6.2 使用字符串、颜色、 尺寸...
5.3 使用Intent创建Tab页面 211 5.4 本章小结 212 第6章 Android应用的资源 213 6.1 资源的类型及存储方式 214 6.1.1 资源的类型以及存储方式 214 6.1.2 使用资源 216 6.2 使用字符串、颜色、 尺寸资源 217 6.2.1 ...
在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中...
03 基于BootStrap和FontAwesome制作页面 04 创建学生信息 05 删除学生信息 第57章 01 上节内容回顾 02 上节bug修复 03 编辑学生信息之前端功能 04 编辑学生信息之后台处理 05 以上内容总结 06 Ajax功能之dataType...
1. 应用系统采用shiro做权限控制,并且跟cas集成 2. 在/spring-node-1/src/main/resources/conf/shiro.properties 文件中 ``` properties shiro.loginUrl=...
最典型的应用场景就是实现访问权限控制,给予不同的用户/用户组不同的页面和接口访问权限,仅能够访问允许的页面和接口。 场景 app.post('/login', function(request, res, next){ // do something }); app.post('/...
5.1.2 使用Intent Filter来为隐式Intent提供服务 121 5.1.3 使用Intent Filter作为插件和扩展 129 5.1.4 使用Intent来广播事件 132 5.2 Adapter简介 135 5.2.1 Android提供的部分Adapter简介 135 5.2.2 使用...
struts2在struts2.xml里配置拦截器可以过滤到指定的url的请求,但是对于ajax的请求确是过滤不了,比如说sesion超时或某些页面有权限控制的,通过ajax的请求时系统会报错最近在解决此类问题时碰上了找了不少资料,...
使用NTFS设置权限 限制共享【不能设置为完全控制】 及时审核日志 sqlserver的审核机制可以帮助跟踪并且阻止系统中没有授权的用户他的行为。比如没有授权的用户登录系统会阻止这次登录,并且把这次操作给记录下来...