⑴ 校驗用戶是否登錄過濾器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 ?
⑵ 請問怎麼用asp.net mvc 的過濾器 實現登錄驗證
繼承IAuthorizationFilter,實現OnAuthorization,從參數AuthorizationContext的HttpContext中獲取cookies並判斷是否登陸返回跳轉Result就行版了。
注意,cookies驗證登陸會有權安全風險
⑶ 判斷用戶登錄是用springmvc 攔截器還是filter
在struts2中用過filter過濾器,在springmvc中還有攔截器,它們都能過濾請求,但是到底有什麼區別呢?
一、定義
攔截器 :是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法後調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前列印出字元串(或者做其它業務邏輯的操作),也可以在你調用方法後列印出字元串,甚至在你拋出異常的時候做業務邏輯的操作。
過濾器:是在javaweb中,你傳入的request、response提前過濾掉一些信息,或者提前設置一些參數,然後再傳入servlet或者struts的action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者 struts的action前統一設置字元集,或者去除掉一些非法字元.。
二、xml文件配置
1.filter
該過濾器的方法是創建一個類XXXFilter實現此介面,並在該類中的doFilter方法中聲明過濾規則,然後在配置文件web.xml中聲明他所過濾的路徑
<filter>
<filter-name>XXXFilter</filter-name>
<filter-class>
com.web.util.XXXFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>XXXFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter>
<filter-name>XXXFilter</filter-name>
<filter-class>
com.web.util.XXXFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>XXXFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
2.Interceptor
它也要實現HandlerInterceptor 介面,這里只介紹方法註解配置
<!-- 攔截器 -->
<mvc:interceptors>
<!-- 多個攔截器,順序執行 -->
<mvc:interceptor>
<mvc:mapping path="/entryOrJsonController/*" /><!-- 如果不配置或/*,將攔截所有的Controller -->
<bean class="com.wy.interceptor.CommonInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
<!-- 攔截器 -->
<mvc:interceptors>
<!-- 多個攔截器,順序執行 -->
<mvc:interceptor>
<mvc:mapping path="/entryOrJsonController/*" /><!-- 如果不配置或/*,將攔截所有的Controller -->
<bean class="com.wy.interceptor.CommonInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
三、具體區別
filter
Interceptor
多個的執行順序
根據filter mapping配置的先後順序
按照配置的順序,但是可以通過order控制順序
規范
在Servlet規范中定義的,是Servlet容器支持的
Spring容器內的,是Spring框架支持的。
使用范圍
只能用於Web程序中
既可以用於Web程序,也可以用於Application、Swing程序中。
深度
Filter在只在Servlet前後起作用
攔截器能夠深入到方法前後、異常拋出前後等
四、總結
兩者的本質區別:攔截器是基於java的反射機制的,而過濾器是基於函數回調。從靈活性上說攔截器功能更強大些,Filter能做的事情,他都能做,而且可以在請求前,請求後執行,比較靈活。Filter主要是針對URL地址做一個編碼的事情、過濾掉沒用的參數、安全校驗(比較泛的,比如登錄不登錄之類),太細的話,還是建議用interceptor。不過還是根據不同情況選擇合適的。
⑷ 過濾器驗證怎麼做
主要分成以下四個方面: 一、過濾器微生物截流研究 遵照法規部門對無菌工藝的要求,對除菌級液體過濾器進行細菌截留驗證是非常重要的步驟。驗證的研究應該由實驗中獲得的截留數據構成,這些數據用以判斷除菌級過濾膜對微生物的截留能力。挑戰微生物可以是產品或替代樣品(根據細菌活度研究結果)。 二、過濾器析出物研究 析出物研究是考查過濾器在過濾過程中對料液的影響。 檢測目的是用類似實際料液的溶劑,在最差的條件下模擬檢測過濾器的析出物的成分特徵和含量。 三、過濾器兼容性研究 兼容性研究是考查料液對過濾器的影響。 四、過濾器產品起泡點研究 研究目的是測試產品起泡點比率。三批過濾器,三批產品,分別檢測水潤濕起泡點和產品潤濕起泡點。 摘自密理博中國博客
⑸ java添加過濾器驗證登錄後無法跳轉到登錄界面
改成request.getRequestDispatcher("/login.jsp").forward(request, response);
⑹ 如何用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(){}
}
⑺ 用過濾器判斷用戶是否登錄,並且可以進行操作
你在session中設置的是User對象,所以你通過session去取時,也只能取到User對象
User user = (User) Session.getAttribute("loginUser");
然後版判斷user不為空權和user.getUsername不為空
⑻ php如何驗證過濾用戶是否登錄
一、可以通過Session,實現用戶登錄驗證。
session習慣上被譯為會話,它的設計是為了在一個訪問期間在不同的頁面間傳輸數據,以解決http協議無狀態的問題。
session_register()函數的作用是注冊新的變數,它會在全局變數中增加1個變數到目前的session之中,以後其他頁面可以通過session_is_registered()函數檢測該session變數是否已經注冊。
二、通過session來檢測用戶登錄信息,由兩個文件組成,login.php為用戶登錄頁面,checklogin.php用於檢測賬號、密碼和是否登錄成功。
具體參考代碼如下:
login.php的代碼如下:
<?php
session_start();//初始化session
if(isset($_SESSION['shili']))
{
header("Location:shili.php");//重新定向到其他頁面
exit();
}
?>
<scriptlanguage="javascript">
functionchecklogin(){
if((login.username.value!="")&&(login.password.value!=""))
{
returntrue;//判斷用戶名和密碼不為空,返回TRUE
}
else
{
alert("昵稱或密碼不能為空!")
}
}
</script>
<styletype="text/css">
.style1{font-size:13px;font-family:"黑體";font-weight:normal;color:#0099FF;}
</style>
<divalign="center">
<formname="login"method="post"action="checklogin.php"onSubmit="returnchecklogin()">
<tablewidth="260"border="1"bgcolor="#D8EFFA">
<tralign="center">
<tdheight="30"colspan="2"><spanclass="style1">管理系統登錄</span></td>
</tr>
<tr>
<tdwidth="90"align="center"class="style1">管理員:</td>
<tdwidth="170"height="20"align="left"valign="middle"><inputname="username"type="text"id="username"size="20"></td>
</tr>
<tr>
<tdalign="center"class="style1">密碼:</td>
<tdheight="20"align="left"valign="middle"><inputname="password"type="password"id="password"size="20"></td>
</tr>
<tr>
<tdalign="center"class="style1"></td>
<tdheight="20"align="center"><inputtype="submit"name="Submit"value="登錄"></td>
</tr>
</table>
</form>
</div>
checklogin.php的代碼如下:
<?php
session_start();//初始session
if(isset($_SESSION['shili']))
{
header("Location:shili.php");//重新定向到其他頁面
exit;
}//登錄過的話立即結束
$shili_name=$_POST['username'];//獲取參數
$password=$_POST['password'];
//驗證管理員名稱和密碼是否正確,這里採用直接驗證,沒有連接資料庫
if($shili_name=="mr"and$password=="mrsoft")
{
session_register("shili");//注冊新的變數,保存當前會話的昵稱
$shili=$shili_name;
echo"<fontcolor=red>登錄成功!</font>";
header("Location:shili.php");//登錄成功重定向到管理頁面
}
else
{
echo"<tablewidth='100%'align=center><tr><tdalign=center>";
echo"賬號或密碼錯誤,或者不是管理員賬號<br>";
echo"<fontcolor=red>登錄失敗!</font><br><ahref='login.php'>請重新輸入</a>";
echo"</td></tr></table>";
}
?>
shili.php的代碼如下:(實驗簡單驗證)
<?php
echo"WelcometoMyWorld!";
?>
//如果想要對某個頁面限制瀏覽的用戶,可以使用同樣的方式,只要把如下的代碼放在該頁面的開頭即可:
<?php
session_start();
if(!isset($_SESSION['shili'])){
echo"<palign=center>";
echo"<fontcolor=#ff0000size=5><strong><big>";
echo"你沒有登錄,請<ahref='denglu.php'>登錄</a>!";
echo"</big></strong></font></p>";
exit();
}
?>
⑼ 驗證登錄過濾器類怎麼配置web.xml
可以把的值改為"*",默認全都過濾,然後在過濾器裡面寫一個正則表達式: String str = "[\\w]{1,}\\.jsp$";來判斷是否是jsp頁面,如果是就不執行doFilter()方法,這樣過濾才算靈活,獲取請求的文件名不用我說了吧?相信你會的
⑽ filter驗證登陸,導致死循環
login.jsp是不需要登錄就應該能訪問的,你現在的過濾器所有jsp都需要登陸後才能訪問,包括login.jsp。那麼我還怎麼登錄?
也就是說,當你訪問login.jsp的時候,就要進入過濾器,過濾器拿不到session中的信息,所以,過濾器要跳轉到login.jsp。由於是重定向方式跳轉,所以瀏覽器會再發請求到伺服器,訪問login.jsp,然後還是先通過過濾器進行驗證,以此周而復始,就死循環了。
方法就是在過濾器中,判斷請求地址:
String uri = request.getRequestURI();
if(uri.endsWith("login.jsp"))
{
arg2.doFilter(request,response);
}
else
{
try{
Object o=request.getSession().getAttribute("username");
if(o==null){
response.sendRedirect("login.jsp");
}else if(o.toString().equals("")){
response.sendRedirect("login.jsp");
}else{
response.sendRedirect("success.jsp");
}
}catch(Exception e){
e.printStackTrace();
}
}