Javaweb网上商城项目实战(26)实现权限过滤器

应用场景

在项目运行过程中,如果希望某些资源不能被用户直接访问到,只有登录之后才能访问,比如购物车页面、购物详情页面、购物列表等等。

解决方案

创建一个自定义的过滤器,在过滤器中为这些资源分别配置好路径,在过滤器中判断用户是否登录,如果登录了就放行,如果没有登录就返回提示信息。

具体实现

在filter包下创建一个过滤器PriviledgeFilter

创建过滤器后web.xml中增加了如下代码


  PriviledgeFilter
  PriviledgeFilter
  cn.itcast.store.web.filter.PriviledgeFilter


  PriviledgeFilter
  /jsp/cart.jsp
  /jsp/order_info.jsp
  /jsp/order_list.jsp

PriviledgeFilter中编写如下代码

package com.geekerstar.store.web.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 com.geekerstar.store.domain.User;

public class PriviledgeFilter implements Filter {

	public PriviledgeFilter() {
	}

	public void destroy() {

	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		HttpServletRequest myReq = (HttpServletRequest) request;
		// 判断当前的session中是否存在已经登录成功的用户
		User user = (User) myReq.getSession().getAttribute("loginUser");
		if (null != user) {
			// 如果存在,放行
			chain.doFilter(request, response);
		} else {
			// 如果不存在,转入到提示页面
			myReq.setAttribute("msg", "请登录之后再访问");
			// 转入到提示页面
			myReq.getRequestDispatcher("/jsp/info.jsp").forward(request, response);
		}

	}

	public void init(FilterConfig fConfig) throws ServletException {
	}

}

效果演示

此时我在没有登录的情况下直接访问http://localhost:8080/store_v1/jsp/order_list.jsp,会出现如下提示

点击登录之后就可以访问了。

源码下载

[dm href=’https://www.jikewenku.com/product/1700.html’]下载地址[/dm]

导航目录

[dm href=’https://www.jikewenku.com/project/2786.html’]查看导航[/dm]

本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » Javaweb网上商城项目实战(26)实现权限过滤器

Leave a Reply

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多