Filter用作安全登陆

  Filter用作安全登陆

  上一篇文章写到用springmvc拦截器来做登陆验证(http://blog.csdn.net/make__it/article/details/78840576),但是它有不足的地方。

这篇用filter来做安全登陆,何为安全登陆,简单点说就是登陆之后才能访问页面,不登陆什么页面都访问不了。也可以看出springmvc的拦截器之拦截对controller的访问,而filter拦截所有的访问

代码如下

一:后台代码

public class LoginFilter implements Filter{

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse, FilterChain chain)
			throws IOException, ServletException {
		// TODO Auto-generated method stub
		HttpServletRequest request=(HttpServletRequest) servletrequest;  
        HttpServletResponse response=(HttpServletResponse) servletresponse;  
        String servletPath = request.getServletPath(); 
        System.out.println(servletPath);
        //如果是去登陆页面直接放行。
		if(servletPath.contains("login")){
			System.out.println("go");
			chain.doFilter(request, response);
			return;//这个return是必须的,不然可能无法跳转
		}
//		if(servletPath.contains("index")){
//			chain.doFilter(request, response);
//			return;
//		}
		HttpSession session=request.getSession();
		
		String username=(String) request.getAttribute("username");
		if(username!=null){
			chain.doFilter(request, response);
		}
		response.sendRedirect("/WEB-INF/views/login.jsp");
		//request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
		return;
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

}

二:配置

在web.xml中配置

<filter>  
<filter-name>myfilter</filter-name>  
 <filter-class>com.students.controller.LoginFilter</filter-class>  
</filter>  
<filter-mapping>  
 <filter-name>myfilter</filter-name>  
 <url-pattern>/*</url-pattern>  //表示所有路径
  
</filter-mapping>
还需要配置过滤掉静态资源

<servlet-mapping>  
    <servlet-name>default</servlet-name>  
    <url-pattern>/js/*</url-pattern>  //这个根据自己的实际位置来写
    <url-pattern>/css/*</url-pattern>  
    <url-pattern>/images/*</url-pattern> 
    <url-pattern>/static/*</url-pattern> 
</servlet-mapping>

在springmvc.xml需要配置

 <mvc:default-servlet-handler/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
过滤器可以用于登录拦截,实现用户登录校验的功能。下面是一个使用过滤器进行登录拦截的示例: ```java import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebFilter(urlPatterns = "/secured/*") // 过滤器拦截以/secured/开头的URL public class LoginFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // 初始化操作 } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; // 判断用户是否已登录 if (request.getSession().getAttribute("user") == null) { // 未登录,重定向到登录页面 response.sendRedirect(request.getContextPath() + "/login"); } else { // 已登录,继续处理请求 filterChain.doFilter(request, response); } } @Override public void destroy() { // 销毁操作 } } ``` 上述代码中,我们定义了一个名为LoginFilter的过滤器,并使用@WebFilter注解指定了过滤器要拦截的URL模式为以"/secured/"开头的URL。在doFilter方法中,我们通过判断用户是否已登录来决定是否继续处理请求。如果用户未登录,则重定向到登录页面;如果用户已登录,则继续处理请求。 请注意,上述示例中的登录校验逻辑是简化的,实际应用中可能需要根据具体业务需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值