实现sessionfilter_session应用--采用filter和session实现简单用户权限控制
前面有講到一些session的基礎知識點,這里那我們就將session和filter做結合,實現一個簡單地應用處理用于一般后端管理程序的權限控制!
①我們先建立一個filter的實現類SecurityServlet,簡單代碼如下:import?java.io.IOException;
import?java.util.ArrayList;
import?java.util.List;
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.HttpServlet;
import?javax.servlet.http.HttpServletRequest;
import?javax.servlet.http.HttpServletResponse;
import?javax.servlet.http.HttpSession;
import?org.apache.log4j.Logger;
public?class?SecurityServlet?extends?HttpServlet?implements?Filter?{
private?static?final?long?serialVersionUID?=?1L;
private?FilterConfig?filterConfig;
private?List?exclusions?=?new?ArrayList();
private?static?Logger?logger?=?Logger.getLogger(SecurityServlet.class);
public?void?doFilter(ServletRequest?request,?ServletResponse?response,
FilterChain?chain)?throws?IOException,?ServletException?{
HttpServletRequest?req?=?(HttpServletRequest)?request;
HttpServletResponse?res?=?(HttpServletResponse)?response;
HttpSession?session?=?req.getSession(true);
Object?userinfos?=?session.getAttribute("unionid");
String?url?=?req.getRequestURI();
if?(filter(url))?{?包含以*.js,*.gif,*.jpg,*.png,*.css,*.ico結尾的不做任何處理
chain.doFilter(request,?response);
}?else?{???//否則進行權限判斷,如果存在session則進入正常訪問,否則進入登錄頁面
if?(userinfos?==?null?||?"".equals(userinfos))?{
res.sendRedirect("/user/toindex");????//權限不夠,跳轉至登錄頁面
}?else?{
chain.doFilter(request,?response);???//權限正常,可以訪問
}
}
}
//采用xml配置方式設置不過濾的參數初始化如:
//
//exclusions
//*.js,*.gif,*.jpg,*.png,*.css,*.ico?包含以*.js,*.gif,*.jpg,*.png,*.css,*.ico結尾的不做任何處理
//
public?void?init(FilterConfig?config)?throws?ServletException?{
this.filterConfig?=?config;
String?exclu?=?filterConfig.getInitParameter("exclusions");
logger.error(exclu);
if?(null?!=?exclu)?{
String[]?exclus?=?exclu.split(",");
for?(int?i?=?0;?i?
exclusions.add(exclus[i]);
}
}
}
//直接在這里設置不進行過濾的url請求
public?Boolean?filter(String?url)?{
//?包含以*.js,*.gif,*.jpg,*.png,*.css,*.ico結尾的不做任何處理
if?(url.indexOf(".js")?!=?-1?||?url.indexOf(".jpg")?!=?-1
||?url.indexOf(".png")?!=?-1?||?url.indexOf(".gif")?!=?-1
||?url.indexOf(".css")?!=?-1?||?url.indexOf(".ico")?!=?-1
||?url.indexOf("login")?!=?-1?||?url.indexOf("toindex")?!=?-1||?url.indexOf("gettk")?!=?-1)?{
return?true;
}?else?{
return?false;
}
}
}
②登錄login和session設置實現,這里我們依然用上一篇中簡單session設置的方法實現:/**
*?@Description:?用戶oauth授權登錄
*?@param?@param?request
*?@param?@param?response
*?@param?@param?code
*?@param?@param?state
*?@param?@return
*?@author?dapengniao
*?@date?2016年1月13日?下午3:59:14
*/
@RequestMapping("login")
public?ModelAndView?UserOAuthLogin(ModelAndView?view,
HttpServletRequest?request,?HttpServletResponse?response,
@RequestParam(value?=?"code",?required?=?false)?String?code,
@RequestParam(value?=?"state",?required?=?false)?String?state)?{
OauthCode_GetUseInfo?oauth?=?new?OauthCode_GetUseInfo(code);
try?{
UserInfo?userinfos?=?oauth.getUserInfo();//通過公用方法用code獲取用戶基本信息
request.getSession().setAttribute("unionid",userinfos.getUnionid());?//將用戶unionid緩存到session
request.getSession().setAttribute("petname",
userinfos.getNickname());???//將昵稱緩存到session
view.setViewName("index");
return?view;
}?catch?(Exception?e)?{
logger.error(e,?e);
return?view;
}
}
③我們需要將我們寫好的filter加入到我們的項目啟動中,所以我們需要在我們的web.xml中加入配置,如下:
SecurityServlet
com.cuiyongzhi.filter.SecurityServlet
exclusions
*.js,*.gif,*.jpg,*.png,*.css,*.ico
SecurityServlet
/*
到這里我們采用session和filter去實現簡單的權限控制就已經實現完成了,這里給出的是代碼片段,感謝翻閱,如有疑問可以留言討論!
除非注明,否則文章均由 崔用志博客 整理發布,歡迎轉載。
如果喜歡,可以點此訂閱本站
總結
以上是生活随笔為你收集整理的实现sessionfilter_session应用--采用filter和session实现简单用户权限控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “云辙泉分”下一句是什么
- 下一篇: 广元南山隧道南河互通立交图_广元城区一隧