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>
分享到:
相关推荐
**JSP页面的访问控制**是指在基于JavaServer Pages(JSP)技术构建的Web应用程序中,对用户访问特定页面或资源的权限进行管理的一种机制。这种机制通常用于确保只有经过身份验证和授权的用户才能访问受保护的内容,...
下面我们将详细讨论Filter的工作原理以及`UserRoleFilter`如何实现页面访问权限控制: 1. **Filter生命周期**: - **初始化**:当Filter被加载时,会调用`init(FilterConfig filterConfig)`方法。在这个方法中,`...
在实际开发中,可以借助各种库和框架(如React或Angular)提供的钩子函数来实现更复杂的页面访问控制。例如,在React中,可以在组件的生命周期方法中进行检查: ```jsx class ProtectedPage extends React....
本文提出了一种利用Java Servlet过滤器技术和XML文档来实现Web页面访问控制的方法,能够有效解决通过URL直接访问带来的潜在问题。 #### 关键词 Java Servlet;过滤器(Filter);自定义标签;XML #### 当前背景 ...
2. 页面访问控制:为了确保只有特定的用户可以访问某些页面,比如只有管理员才能访问后台管理页面,通常需要在这些页面的顶部加入权限验证代码。如果用户没有相应的权限,应重定向到登录页面或其他指定页面。 3. ...
二、页面访问控制 在ASP.NET中,可以使用`[Authorize]`特性来限制对特定页面或方法的访问。这个特性可以应用于类或方法上,表示只有经过身份验证并具有相应权限的用户才能访问。例如: ```csharp [Authorize(Roles...
- 安全性:确保只有授权的大客户端能控制小客户端,避免未授权的访问和恶意指令。 - 错误处理:当WebSocket连接断开或消息传递失败时,需要有重试机制或错误提示。 - 连接管理:维护好每个客户端的连接状态,避免...
在2007年国际计算智能与安全会议上提出了一种针对ASP页面的细粒度授权和访问控制方法,旨在解决ASP页面访问控制的挑战。 随着主动网页(AWP)的广泛应用,尤其是对于创建交互式Web应用程序的需求,其内容可以根据...
本文演示了配置IP和IPX访问控制列表的一系列实验,讲解了如何定义、查看和监测有关访问控制列表的技能。所有这些对于CCNA考试和网络工程都有很大益处。作为对本章的总结,现将本章所涉及的主要命令进行汇总,以便...
通过Vuex管理和传递状态,利用Vue Router的路由守卫进行页面访问控制,以及axios的请求拦截器进行API级别的权限验证,可以构建出安全、易用的后台管理系统。实践过程中,还需要注意对权限的细粒度划分,以适应不同...
总结来说,“子页面访问父页面”和“跨iframe访问”是Web开发中的关键技能,它们允许在不同层次或域的页面间进行数据传递和控制交互。理解和掌握这些技术对于构建动态、交互性强的网页至关重要。通过阅读提供的博客...
在Java Web开发中,"用户授权才可以访问某些页面"是一个重要的安全机制,通常涉及到Servlet、Filter和EL(Expression Language)等技术。这个机制确保只有经过身份验证和授权的用户才能访问特定的敏感资源,比如下载...
解决思路1: 在跳转到登录页面之前要将当前访问页面的url保存到cookie里面,登录验证授权通过后,从cookie中取出这个url值,跳转到该url指定的页面。具体实现 我现在的程序是基于ThinkPHP框架的,我们会有一个父类...
通过设置默认控制器,可以方便地控制用户的初始访问行为,例如让用户首先看到登录页面、主页或其他欢迎页面等。这不仅提高了用户体验,还增加了应用程序的安全性。 #### 如何配置默认控制器 在给定的代码片段中,...
《基于JSP的数据库应用程序安全访问控制设计》一文由屈霞撰写,主要探讨了在JSP(JavaServer Pages)开发环境下,如何设计安全的数据库应用程序访问控制机制,以确保不同权限级别的用户能够合法地访问相应的系统资源...
"访问控制缺陷(Access Control Flaws)" 本文档主要讨论访问控制缺陷(Access Control Flaws),这是Web应用程序安全的一个重要方面。访问控制是确保用户只能访问他们被授权的资源的机制。一个安全的访问控制方案...
在现代的互联网应用开发中,有时我们可能会遇到一种需求,即希望特定的Web页面只允许手机用户访问,而限制电脑PC端的访问。这可能是出于优化移动用户体验、防止恶意爬虫或者实施特定策略的原因。标题“如何限制电脑...