這樣在寫控件或者網頁的時候,就不用考慮權限問題了!權限由篩選器管理。
spring的servlet.xml配置如下:
& lt!-權限系統攔截-& gt;
& ltmvc:攔截器& gt
& ltmvc:攔截器& gt
& ltmvc:映射路徑= "/admin/* * "/& gt;
& ltbean class = " com . zmax . web . spring . admincontext interceptor " & gt;
& lt!-開發模式,懶得登錄-& gt;
& ltproperty name = " devmode " value = " 1 "/& gt;
& ltproperty name = " auth " value = " true "/& gt;
& ltproperty name = " log in URL " value = "/admin/log in . do "/& gt;
& ltproperty name = " returnUrl " value = "/admin/index . do "/& gt;
& ltproperty name = " excludeUrls " & gt
& lt列表& gt
& lt值& gt/test . do & lt;/value & gt;
& lt值& gt/log in . do & lt;/value & gt;
& lt值& gt/logout . do & lt;/value & gt;
& lt/list & gt;
& lt/property & gt;
& lt/bean & gt;
& lt/MVC:interceptor & gt;
對應的JAVA代碼:
包com . zmax . utils;
導入javax . servlet . http . http servlet request;
導入javax . servlet . http . http servlet response;
導入org . Apache . log4j . logger;
導入org . spring framework . web . servlet . modeland view;
import org . spring framework . web . servlet . handler . handlerinterceptoradapter;
公共類AdminContextInterceptor擴展HandlerInterceptorAdapter{
private static final Logger Logger = Logger . get Logger(admincontext interceptor . class);
@覆蓋
公共布爾預處理(HttpServletRequest請求,
HttpServletResponse響應,對象處理程序)引發異常{
if (logger.isDebugEnabled())
Logger.debug("權限預處理");
//獲取用戶訪問的地址。
String uri = getURI(請求);
//不在驗證範圍內。
if(排除(uri)) {
返回true
}
AdminUser AdminUser =(AdminUser)session . get attribute(request,SessionName。ADMINUSER);
//空用戶跳轉到登錄頁面。
if (adminUser == null) {
if(devmode = = null | | devmode . equals(0)){
response . send redirect(getLoginUrl(request));
返回false
}
}
//如果用戶權限不足,跳轉到登錄頁面。
if(checkAdmin(adminUser,uri)){
response . send redirect(getLoginUrl(request));
返回false
}否則{
//權限足夠,返回true。
adminUser = adminuserservice . get(devmode);
session.setAttribute(請求,響應,會話名稱。ADMINUSER、ADMINUSER);
返回true
}
返回true
}
@覆蓋
公共void post handle(http servlet request請求,
HttpServletResponse響應,對象處理程序,ModelAndView mav)
引發異常{
if (logger.isDebugEnabled())
Logger.debug("權限處理");
}
@覆蓋
完成後公共void(http servlet request請求,
HttpServletResponse響應,對象處理程序,異常ex)
引發異常{
if (logger.isDebugEnabled())
Logger.debug("權限後處理");
}
}