spring aop:
import javax.servlet.http.HttpServletRequest;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.struts.action.ActionMapping;
/**
* 这是一个拦截器,用来验证用户是否通过验证
*
*/
public class AuthorityInterceptor implements MethodInterceptor {
public Object invoke(MethodInvocation invocation) throws Throwable
{
HttpServletRequest request = null;
ActionMapping mapping = null;
Object[] args = invocation.getArguments();
for (int i = 0 ; i < args.length ; i++ )
{
if (args[i] instanceof HttpServletRequest) request = (HttpServletRequest)args[i];
if (args[i] instanceof ActionMapping) mapping = (ActionMapping)args[i];
}
if ( request.getSession().getAttribute("adminname") != null)
{
return invocation.proceed();
}
else
{
return mapping.findForward("login");
}
}
}
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>/vaiiduser</value>
<value>/admin</value>
<value>/phone</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>authorityInterceptor</value>
</list>
</property>
</bean>
<bean id="authorityInterceptor" class="org.mmc.utils.AuthorityInterceptor"/>
servlet过滤器
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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* 设置字符集、过滤未登录的非法请求
*/
public class UserLoginFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
protected boolean ignore = false;
protected String forwardPath = null;
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// 设置编码方式,web.xml里面有filter参数的初始化设置
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
String requesturi = httpServletRequest.getRequestURI();
// 通过检查session中的变量,过虑请求,最好把username提取出来当常量
HttpSession session = httpServletRequest.getSession();
Object currentUser = session.getAttribute("username");
// 当前会话用户为空而且不是请求登录,退出登录,欢迎页面和根目录则退回到应用的根目录
if (currentUser == null
&& !requesturi.endsWith("/login.action")
&& !requesturi.endsWith("/logout.action")
&& !requesturi.endsWith("/index.jsp")
&& !requesturi.endsWith(httpServletRequest.getContextPath()
+ "/")) {
httpServletResponse.sendRedirect(httpServletRequest
.getContextPath()
+ "/");
return;
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
this.forwardPath = filterConfig.getInitParameter("forwardpath");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
<filter>
<filter-name>Login Filter</filter-name>
<filter-class>
你的包名(自己改一下).UserLoginFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>forwardpath</param-name>
<param-value>index.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Login Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
ASP.NET企业应用中一种页面访问控制机制的设计,李朔,熊松,访问权限的管理是B/S模式的企业应用中必须重点考虑的问题,本文探讨了基于RBAC(基于角色的访问控制)思想的企业应用的访问控制机��
JSP页面的访问控制JSP页面的访问控制JSP页面的访问控制JSP页面的访问控制JSP页面的访问控制JSP页面的访问控制JSP页面的访问控制JSP页面的访问控制JSP页面的访问控制JSP页面的访问控制
Filter控制页面的访问权限Filter控制页面的访问权限Filter控制页面的访问权限
大客户端可以发送消息到小客户端,并且大客户端可以发送“jump”命令到小客户端控制小客户端页面跳转到百度。其中系统管理页面记录所有大端与小端发送的消息,以及大端与小端的id。
STRUTS2拦截器控制页面访问权限的设计与实现,解决基于STRUTS2的web应用的程序访问控制,防止非法访问
(3) 最佳淘汰算法(OPT)(4) 最少访问页面算法(LFU) (5) 最近最不经常使用算法(NUR) 命中率=1-页面失效次数/页地址流长度 <程序设计> 本实验的程序设计基本上按照实验内容进行。即首先用 srand()和 rand()函数定 义和...
1.本应用为基于RBAC的访问控制系统的通用平台实现,实现了RBAC0模型。 2.Web层采用SpringMVC 2.5.6+tiles2.2.1构建,JSP+JQuery页面展现。 3.V2.1版本添加了用户头像修改和密码修改功能。 4.压缩包为Eclipse动态Web...
解决思路1: 在跳转到登录页面之前要将当前访问页面的url保存到cookie里面,登录验证授权通过后,从cookie中取出这个url值,跳转到该url指定的页面。具体实现 我现在的程序是基于ThinkPHP框架的,我们会有一个父类...
js 实现 页面访问时间限制! 值得下载看看!资源免费,大家分享!!
这个是我开发中用到的,就引用了,喜欢的拿走
1.本应用为基于RBAC的访问控制系统的通用平台实现,实现了RBAC0模型。 2.Web层采用SpringMVC 2.5.6构建,JSP+JQuery页面展现。 3.压缩包为Eclipse动态Web工程,可以直接导入Eclipse。 4.本应用需要JDK5.0+以上环境。...
控制用户访问学完本节课之后,你会明白如下知识: – 区别对象权限和系统权限的区别 – 在表上授予权限 – 授予角色 – 区别权限和角色
基于“角色-模块-页面-功能点”的分级细粒度权限访问控制方法,李跃,邓芳,以RBAC理论为基础,根据WEB系统的不同特点以及用户访问的特殊要求,将WEB系统的权限进行分层定义。通过控制WEB系统不同层次的权限:��
突触用于与synoacltool交互的Python模块,该工具是用于访问 NAS专有ACL实现的CLI工具。 该模块将在实际的Synology NAS上运行。 在编写涉及设置ACL的任务的脚本时,此功能很有用。安装这个软件包可以通过pip来安装,...
本人学习ASP的心得,控制页面限权访问的几种实用方法总结!
【SpringBoot页面跳转访问css、js等静态资源引用无效解决】 解释:SpringBoot项目默认访问根目录有三个分别是: /resources :系统默认的根路径 /static :所有静态资源文件如js、css、jpg、html等文件是可以直接...
该压缩包实现了利用过滤器或者拦截器对登录信息进行验证跳转登陆页的功能,利用的是SpringBoot和thymeleaf,使用前请先看使用说明
这是一个可以控制同一ip在特定时间里访问某一页面次数的demo,可以限制每秒每分钟每小时每天的次数,防止一般的攻击
对传统RBAC访问控制模型进行扩展,提出了基于导航树页面的RBAC模型,有效避免了传统RBAC模型应用到B/...此扩展模型是一种通用的动态加载导航树页面访问控制模型,为开发与设计此类用户访问控制模型的人提供借鉴。