刚写完用户的访问权限过滤器,基本实现了防止用户直接输入URL访问资源。如有不足请指正!
Java 代码:
package com.viano.filter;
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;
/**
* 用户访问权限的过滤器
* @author viano
*/
public class UsersFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// 设置请求的字符编码
request.setCharacterEncoding("UTF-8");
// 设置返回请求的字符编码
response.setCharacterEncoding("UTF-8");
// 转换ServletRequest为 HttpServletRequest
HttpServletRequest req = (HttpServletRequest) request;
// 转换ServletResponse为HttpServletRequest
HttpServletResponse res = (HttpServletResponse) response;
// 获取Session
HttpSession session = req.getSession();
// 获取Session中存储的对象
Object o = session.getAttribute("user");
// 获取当前请求的URI
String url = req.getRequestURI();
// 判断Session中的对象是否为空;判断请求的URI是否为不允许过滤的URI
if (o == null
&& !url.endsWith("login.jsp") // 对URL地址为此结尾的文件不过滤
&& url.indexOf("login.do") < 0 // 对URL地址中包含此字符串的文件不过滤
&& url.indexOf("/images/") < 0) {
res.sendRedirect(req.getContextPath() + "/login.jsp");
} else {
chain.doFilter(request, response);
res.setHeader("Cache-Control","no-store");
res.setDateHeader("Expires",0);
res.setHeader("Pragma","no-cache");
res.flushBuffer();
}
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
WEB.XML 代码:
<!-- Filter 登陆过滤开始-->
<filter>
<filter-name>UsersFilter</filter-name>
<filter-class>com.viano.filter.UsersFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UsersFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Filter 登陆过滤结束-->
分享到:
相关推荐
综上所述,Java禁止直接URL访问图片涉及多个方面,包括Web服务器配置、Java Servlet、权限验证、过滤器、防盗链技术以及CDN的使用等,这些都需要开发者深入理解和灵活运用。通过这些手段,我们可以有效地保护网络...
2. **过滤**:当用户请求某个资源时,过滤器首先被调用。在这里,它检查请求上下文(比如session)中是否存在有效的用户信息。 3. **处理**:如果发现用户未登录,过滤器会阻止请求继续,并将响应重定向到登录页面...
例如,将所有与管理员相关的请求路径映射到登录过滤器,防止未授权访问。 5. **异常处理**:在过滤器中捕获登录相关的异常,如用户名或密码错误,可以统一处理这些异常,提供友好的错误提示,而不是暴露系统的具体...
URL级别的权限控制是指根据用户角色的不同,授予他们对特定URL的访问权限。这通常通过拦截请求,检查用户的身份和权限来实现。在Spring Security或者Struts2等框架中,我们可以配置访问控制规则,限制不同用户可以...
2. **配置Filter**:在`web.xml`中配置`Filter`,包括定义`<filter>`、`<filter-mapping>`元素,指定过滤器的类名以及需要拦截的URL模式。 3. **Filter链**:多个`Filter`可以串联形成一个`Filter Chain`,按照配置...
总结起来,Servlet过滤器是Java Web开发中的强大工具,能够帮助我们执行预处理和后处理任务,如验证非法字符、控制用户访问权限以及统一数据编码。通过合理配置和组合使用过滤器,我们可以构建出安全、高效且易于...
3. **安全过滤**:为了防止SQL注入和XSS攻击,过滤器还可以对用户输入的数据进行清洗和转义,确保数据安全。 **MySQL数据库连接** MySQL是一种流行的开源关系型数据库管理系统,广泛用于存储和管理应用程序的数据...
- **权限控制**:通过过滤器实现登录检查,未登录用户访问特定页面时,可以重定向到登录页面。 - **日志记录**:记录HTTP请求的详细信息,帮助调试和分析系统行为。 - **性能监控**:统计请求处理时间和资源消耗,...
通过Servlet过滤器,我们可以实现基于URL的权限验证,只有具备相应权限的用户才能访问特定的资源。 字符过滤是另一个关键的安全措施,主要针对用户输入的合法性检查。它可以防止SQL注入、XSS攻击等安全风险,确保...
Servlet过滤器是Java Web开发中的一个重要概念,它在请求到达目标Servlet或JSP之前进行拦截,处理后再将请求传递给目标资源,或者直接修改响应内容。这个机制使得开发者能够实现跨多个请求和响应的通用功能,如数据...
在访问受保护资源之前,过滤器会验证用户是否具有相应的访问权限。 6. **拦截器(Interceptor)**:如果项目使用了如Spring MVC这样的MVC框架,拦截器可以进一步增强权限控制。拦截器在控制器方法执行前进行预处理...
3. **登录验证**:在用户访问受保护资源之前,过滤器可以检查用户是否已登录,未登录则重定向到登录页面。 4. **缓存控制**:设置响应头,控制浏览器缓存策略,防止敏感信息被缓存。 5. **日志记录**:记录请求...
1. **数据预处理**:过滤器可以对请求数据进行预处理,例如验证用户输入,防止SQL注入等安全问题。 2. **数据后处理**:在响应返回给客户端前,过滤器可以对响应内容进行处理,如添加版权信息、压缩响应内容等。 3. ...
2. **权限控制**:用户登录后,所有请求都会经过Shiro的过滤器链,Shiro会根据Subject中的权限信息判断用户是否有权限访问资源。 3. **前端展示**:LayuiMini根据Shiro的权限信息动态渲染界面,比如隐藏无权限的按钮...
源代码应遵循最佳安全实践,如使用预编译的SQL语句防止SQL注入,对用户输入进行过滤和转义来防止XSS攻击。 8. **权限控制策略**:权限系统可能使用ACL(Access Control List)或RBAC模型。ACL允许为每个个体指定...
单点登录(Single Sign-On, SSO)是一种网络身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。在.NET框架下实现SSO,通常会利用微软的身份验证服务(Identity)和OAuth 2.0等...
- **身份验证与权限管理**:Filter可以检查用户请求,确保只有经过认证的用户才能访问特定资源。 - **日志记录**:用于记录用户的特定请求,便于后期分析和审计。 - **数据解码**:处理不标准编码的请求,确保...
在ch20过滤器用户登录验证中,你会看到如何使用过滤器来验证用户是否已登录,这是一个常见的应用场景,可以防止未授权的访问。 总的来说,这个压缩包提供了丰富的实践案例,涵盖了数据库连接池的管理、字符编码的...
Spring Security支持基于角色的访问控制(RBAC),允许我们为每个角色分配特定的权限,然后根据用户的角色决定其对资源的访问权限。 3. **访问控制**:这通常涉及到URL级别的过滤器,如Spring Security的...
7. **URL权限过滤**:通过拦截URL请求,根据用户的权限判断是否允许访问。Spring Security可以通过配置访问决策管理器和访问决策投票器来实现这一功能。 8. **JSP/HTML及CSS/JavaScript**:前端界面的构建,通常...