package org.yc.jd.util;
/**
* @author 后飞IT
* 关于使用过滤器对后台权限的设置
*/
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;
/*
* javaee 是面向接口编程的,所有一般都是实现接口 这里的DoFilter实现了接口Filter 并实现destroy()doFilter()init()
* 这里实现的功能是阻止没有登录的用户登录后台中的页面
* 所以在登录的时候,但验证成功后,我们往作用域对象Session中写入这个Login,所以只要session没有失效,浏览器没有关闭,session就会有这个Attribute("Login")
* request.getSession().setAttribute("Login", admin);
* 所以对任何访问有关后台的请求都要检查session中是否有这个Attribute,如果没有则定向到登陆页面,要求登陆
*
* 注意:~~~
* 这个是需要这个web project更改web.xml的
* <filter>
* <!--这个只是定义一下这个过滤器的名字而已,关键是下面指向的类的位置-->
* <filter-name>loginFilter</filter-name>
* <filter-class>org.yc.jd.util.DoFilter</filter-class>
* </filter>
*
* <filter-mapping>
* <!--过滤器的名字是沟通class和url的-->
* <filter-name>loginFilter</filter-name>
* <!--后台的所有的页面都是在项目的这个back文件夹的,所以对所有的back的内容进行拦截,当然登陆页面就不要放进去了-->
* <url-pattern>/back/*</url-pattern>
*</filter-mapping>
*
* */
public class DoFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
//首先要对arg0 arg1类型转换
HttpServletRequest req=(HttpServletRequest)arg0;
HttpServletResponse res=(HttpServletResponse)arg1;
//从session中获取有关Login的这个Attribute
Object obj = req.getSession().getAttribute("Login");
if(obj==null){
//如果没有有关的这个Attribute中
res.sendRedirect("/JD/login.html");
}else{
//可以是一个过滤器链,所以继续往下
arg2.doFilter(req, res);
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
使用过滤器对后台权限的设置
最新推荐文章于 2021-09-08 18:51:08 发布