(1)最近,上课老师讲了一种web后台开发控制权限管理的方法,基于过滤器实现鉴权,解释:
先说下过滤器:请求来的时候,先通过滤器进行拦截,过滤器中有特定的方法doFilter(),来对拦截的请求进行处理,若满足条件(包含用户有跳转到下一个页面的权限),则继续向下执行,否则重定向到错误页面,或者其他提示页面。
通过过滤器进行权限控制有两种主要的方法,最常用分目录
例如在webapps下:admin文件夹,user文件夹,其中,不需要鉴权的界面,直接放在根目录下即可,如图:
用户在访问时, 过滤器进行判断,拥有admin权限(session中写有从数据库中读出来的写有用户信息的标志 如:request.getSession().setAttribute(“adminflag”, “ok”);)
FilterAdmin:
package com.xupt.ttms.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author wangpei
* @version 创建时间:2016年11月2日 下午7:26:25
* 类说明
*/
@WebFilter("/admin/*")
public class FilterAdmin implements Filter {
public FilterAdmin() {
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse resp=(HttpServletResponse)response;
String s=(String)req.getSession().getAttribute("adminflag");
if(s!=null&&s.equalsIgnoreCase("ok")){
chain.doFilter(request, response);
}
else{
request.setAttribute("desc", "对不起,您无权访问!!!");
RequestDispatcher rd = request.getRequestDispatcher("/error.jsp");
rd.forward(request, response);
}
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
(2)通过开原框架shiro做
这个我只是处于初级会用的地步,还得继续往下深看,等看通了,再写。具体配置shiro我以前写过,可以看。