❶ 用過濾器判斷用戶是否登錄,並且可以進行操作
你在session中設置的是User對象,所以你通過session去取時,也只能取到User對象
User user = (User) Session.getAttribute("loginUser");
然後版判斷user不為空權和user.getUsername不為空
❷ 一個網站的許可權管理,用過濾器還是攔截器更好
Struts2項目通過使用Struts的if標簽進行了session判斷,使得未登錄的用戶不能看到頁面,但是這 種現僅僅在view層進行,如果未登錄用戶直接在地址欄輸入登錄用戶才能訪問的地址,那麼相應的action還是會執行,僅僅是不讓用戶看到罷了。這樣顯然是不好的,所以研究了一下Struts2的許可權驗證。
許可權最核心的是業務邏輯,具體用什麼技術來實現就簡單得多。
通常:用戶與角色建立多對多關系,角色與業務模塊構成多對多關系,許可權管理在後者關系中。
對許可權的攔截,如果系統請求量大,可以用Struts2攔截器來做,請求量小可以放在filter中。但一般單級攔截還不夠,要做到更細粒度的許可權控制,還需要多級攔截。
不大理解filter(過濾器)和interceptor(攔截器)的區別,遂google之。博文中有介紹:
1、攔截器是基於java的反射機制的,而過濾器是基於函數回調 。
2、過濾器依賴與servlet容器,而攔截器不依賴與servlet容器 。
3、攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求 起作用 。
4、攔截器可以訪問action上下文、值棧里的對象,而過濾器不能 。
5、在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容 器初始化時被調用一次 。
❸ 利用過濾器實現登錄許可權限制 對用戶訪問的資源進行過濾,如果沒有登錄,就跳轉到login.jsp,如果登錄了就
過濾+session
❹ java設了用戶登錄過濾器後,沒跳轉一個頁面都要登錄怎麼辦
在過濾器裡面加一個session獲取登錄信息,若已經登陸成功就無需登陸
❺ java添加過濾器驗證登錄後無法跳轉到登錄界面
改成request.getRequestDispatcher("/login.jsp").forward(request, response);
❻ 校驗用戶是否登錄過濾器Filter
CheckLoginFilter net.cnki.tpi.cms.util.CheckLoginFilter redirectURL /login.jsp notCheckURLList /error.jsp;/login.jsp CheckLoginFilter /* 2、然後新創建一個CheckLoginFilter.java類,代碼如下:
/** * 校驗用戶是否已登錄過濾器 * @author lpz * */ public class CheckLoginFilter implements Filter { private FilterConfig filterConfig = null; private String redirectURL = null; private List notCheckURLList = new ArrayList(); public CheckLoginFilter() { } public void destroy() { notCheckURLList.clear(); } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)servletRequest; HttpServletResponse response = (HttpServletResponse)servletResponse; HttpSession session = request.getSession(); Object userInfo = session.getAttribute("userInfo"); if(!(request) && userInfo==null){ //重定向到指定頁面 response.sendRedirect(request.getContextPath() + redirectURL); }else{ //繼續響應請求 chain.doFilter(servletRequest, servletResponse); } } public void init(FilterConfig fConfig) throws ServletException { this.filterConfig = fConfig; redirectURL = filterConfig.getInitParameter("redirectURL"); String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList"); if(!MyStringUtil.isNullOrEmpty(notCheckURLListStr)){ //將字元串轉化為list notCheckURLList = MyStringUtil.convStrToList(notCheckURLListStr,";"); } } /** * 校驗當前請求是否在不過濾的列表中 * @param request * @return */ private boolean (HttpServletRequest request) { String uri = request.getServletPath() + (request.getPathInfo() == null ?
❼ spring security 做的登錄許可權控制,頁面上點擊button請求查詢一些數據。項目重啟後,點擊按鈕仍可查詢
使用spring Security3的四種方法概述
那麼在Spring Security3的使用中,有4種方法:
一種是全部利用配置文件,將用戶、許可權、資源(url)硬編碼在xml文件中,已經實現過,並經過驗證;
二種是用戶和許可權用資料庫存儲,而資源(url)和許可權的對應採用硬編碼配置,目前這種方式已經實現,並經過驗證。
三種是細分角色和許可權,並將用戶、角色、許可權和資源均採用資料庫存儲,並且自定義過濾器,代替原有的FilterSecurityInterceptor過濾器,
並分別實現AccessDecisionManager、和UserDetailsService,並在配置文件中進行相應配置。
目前這種方式已經實現,並經過驗證。
四是修改spring security的源代碼,主要是修改和UserDetailsService兩個類。
前者是將配置文件或資料庫中存儲的資源(url)提取出來加工成為url和許可權列表的Map供Security使用,後者提取用戶名和許可權組成一個完整的(UserDetails)User對象,該對象可以提供用戶的詳細信息供AuthentationManager進行認證與授權使用。
該方法理論上可行,但是比較暴力,也沒有時間實現,未驗證,以後再研究。
說明一下,我目前調通的環境為: java1.6 + struts2.1.6 + spring3.0.1 + hibernate3.3.1 + spring security3.0.2 + oracle9i + weblogic10.3,
順便提一下,目前(2011-4-2)serutity的最新版本為3.1,比較穩定的版本為3.0.5和2.0.6。
當然在進行spring security3的下面4種方法介紹之前,先假定SSH2的環境已經配置完畢,進入正常開發的過程,並且已經導入
spring security3.0.2的5個jar包,分別為:
spring-security-acl-3.0.2.RELEASE.jar
spring-security-config-3.0.2.RELEASE.jar
spring-security-core-3.0.2.RELEASE.jar
spring-security-taglibs-3.0.2.RELEASE.jar
spring-security-web-3.0.2.RELEASE.jar
當然還有其他相關的jar包,在此不再贅述。
❽ 請問怎麼用asp.net mvc 的過濾器 實現登錄驗證
繼承IAuthorizationFilter,實現OnAuthorization,從參數AuthorizationContext的HttpContext中獲取cookies並判斷是否登陸返回跳轉Result就行版了。
注意,cookies驗證登陸會有權安全風險
❾ 如何用Filter實現對注冊用戶是否登錄的過濾
下面是我從前寫的項目里用的用戶過濾。供你參考。你可以去www.mldn.cn上看看,那兒有過濾器的視頻教程。
package filter;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.* ;
//對用戶是否登錄進行過濾
public class UserFilter implements Filter
{
//過濾器初始化
public void init(FilterConfig filterConfig) throws ServletException
{
}
//實現Filter介面主方法
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain) throws ServletException,IOException
{
response.setContentType("text/html ;charset=GBK");
request.setCharacterEncoding("GBK");
PrintWriter out=response.getWriter();
HttpServletRequest req=(HttpServletRequest)request;
HttpSession session=req.getSession();
//System.out.println(session.getAttribute("user"));
//user是用戶登錄後session.setAtrribute("user",×××)中的user
if(session.getAttribute("user")!=null){
chain.doFilter(request, response);
}
else{//未登錄,後退
out.println("<script language='javascript'>alert('你還未登錄');");
out.println("history.go(-1);</script>");
}
}
//過濾器銷毀
public void destroy(){}
}