粗颗粒度权限控制:采用过滤器和session来完成
粗颗粒度权限控制作用:使用过滤器完成粗颗粒度的权限控制,如果Session不存在就跳转到首页,如果存在可以通过URL链接访问到对应的操作。
实现:
第一步:先定义一个过滤器
public class SystemFilter implements Filter {
/**web容器启动的时候,执行的方法*/
//存放没有Session之前,需要放行的连接
List<String> list = newArrayList<String>();
public void init(FilterConfig config) throws ServletException {
list.add("/index.jsp");
list.add("/image.jsp");
list.add("/system/elecMenuAction_menuHome.do");
}
/**每次访问URL连接的时候,先执行过滤器的doFilter的方法*/
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException,ServletException {
HttpServletRequest request =(HttpServletRequest) req;
HttpServletResponse response= (HttpServletResponse) res;
//获取访问的连接地址
String path =request.getServletPath();
//如果访问的路径path包含在放行的List的存放的连接的时候,此时需要放行
if(list.contains(path)){
chain.doFilter(request,response);
return;
}
//获取用户登录的Session
ElecUserelecUser = (ElecUser)request.getSession().getAttribute("globle_user");
//放行
if(elecUser!=null){
chain.doFilter(request,response);
return;
}
//重定向到登录页面
response.sendRedirect(request.getContextPath()+"/index.jsp");
}
/**销毁*/
public void destroy() {
}
}
第二步:在文本容器中添加对应的过滤器
<!-- 自定义过滤器,要求添加到struts2过滤器的前面 -->
<filter>
<filter-name>SystemFilter</filter-name>
<filter-class>cn.itcast.elec.util.SystemFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SystemFilter</filter-name>
<url-pattern>*.do</url-pattern>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
总结:粗颗粒的的权限控制
1.使用过滤器
2.在在过滤器中定义放行的连接,因为不是每个操作都会存在session(如:进入登录的界面、生成验证码的界面)
3.在过滤器中获取登陆后存放的Session,如果Session不为空,则放行,即可以操作定义的业务功能,如果Session为空,则挑转到登陆页面。
4.控制访问的系统必须要存在session