<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    IT人生
    專注于java相關(guān)技術(shù).
    posts - 53,comments - 87,trackbacks - 0

    項(xiàng)目中一般需要做驗(yàn)證用戶是否登陸,沒登陸就不能進(jìn)入ACTION執(zhí)行后臺(tái)代碼等的需要。
    這里根據(jù)以前經(jīng)驗(yàn)我用兩種方法做過驗(yàn)證,特記下供大家參考,有更好方法請(qǐng)留言。
    第一種
    為所有ACTION做一個(gè)BaseAction(此類 extends Action)
    此類重載execute方法 ,部分實(shí)例代碼 ,根據(jù)個(gè)人需要去定
       /**
         * override method.
         */
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception
        {
            super.execute(mapping, form, request, response);

            //用戶如果未登錄或session過期,則轉(zhuǎn)向登錄動(dòng)作。
            if (!isLogin(request))
                return mapping.findForward("login");

            try
            {
                ActionForward forward = doExecute(mapping, form, request, response);
               
                //重新生成token
                //super.saveToken(request);
                return forward;
            } catch (Exception e)
            {
                logger.error(e);
                e.printStackTrace();
               
                return mapping.findForward("systemError");
            }
        }

    /**
         * 判斷用戶是否已經(jīng)登錄。
         *
         * @param request
         * @return
         */
        protected boolean isLogin(HttpServletRequest request)
        {
            return request.getSession().getAttribute(Session_User) != null;
        }

    這樣寫后,以后所有ACTION都繼承此類,然后重寫doExecute方法即可
    GradeAction extends BaseAction
    在doExecute方法 寫操作代碼

    第二種
    也是做個(gè)BaseAction繼承DispatchAction,然后所有ACTION繼承此BaseAction
    BaseAction主要代碼片段
    /**
         * override method.
         */
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception
        { //用戶如果未登錄或session過期,則轉(zhuǎn)向登錄動(dòng)作。
          if (!isLogin(request))
                return mapping.findForward("sessionEnd");
    try
            {
               // ActionForward forward = new ActionForward();

                //重新生成token
                //super.saveToken(request);
           
                return super.execute(mapping, form, request, response);
            } catch (Exception e)
            {
               // logger.error(e);
                e.printStackTrace();
               
                return mapping.findForward("systemError");
            }
    }
    以后所有類繼承此基類
    LinkAction extends ActionX
    由于DispatchAction特點(diǎn),所有繼承BaseAction的類都可以正常寫單獨(dú)方法完成。

    至此兩種驗(yàn)證見效。

    轉(zhuǎn)自:http://hi.baidu.com/nieweiguo/blog/item/9fee19d53cd761c751da4bb3.html
    減肥瘦身品總匯     值得信賴*脈脈美妝*正品現(xiàn)貨謝絕講價(jià)     〓深港商盟〓名品歐衣坊(美國(guó)休閑品牌AF系列)     QQ三國(guó)游戲幣及道具專賣店     小臉紅紅的瘦身旗艦店減肥瘦身品總匯     值得信賴*脈脈美妝*正品現(xiàn)貨謝絕講價(jià)     〓深港商盟〓名品歐衣坊(美國(guó)休閑品牌AF系列)     QQ三國(guó)游戲幣及道具專賣店     小臉紅紅的瘦身旗艦店



    減肥瘦身品總匯     值得信賴*脈脈美妝*正品現(xiàn)貨謝絕講價(jià)     〓深港商盟〓名品歐衣坊(美國(guó)休閑品牌AF系列)     QQ三國(guó)游戲幣及道具專賣店     小臉紅紅的瘦身旗艦店
    posted on 2009-05-26 08:53 龍華城 閱讀(2738) 評(píng)論(7)  編輯  收藏

    FeedBack:
    # re: Struts1.2 驗(yàn)證用戶是否登陸 兩種方法(轉(zhuǎn))
    2009-05-29 13:34 | zhong
    加個(gè)filter如何?這樣做可以避免把要過濾的action硬編碼于類中,而且無(wú)需繼承BaseAction。不知這個(gè)方法如何?  回復(fù)  更多評(píng)論
      
    # re: Struts1.2 驗(yàn)證用戶是否登陸 兩種方法(轉(zhuǎn))
    2011-05-05 14:59 | liangwu
    嗯 用filter是一個(gè)好辦法  回復(fù)  更多評(píng)論
      
    # re: Struts1.2 驗(yàn)證用戶是否登陸 兩種方法(轉(zhuǎn))
    2011-05-05 16:08 | liangwu
    package com.gpPlatform.utils;
    /* 檢驗(yàn)管理員是否已經(jīng)登錄的過濾器*/
    import java.util.List;
    import java.util.ArrayList;
    import java.io.IOException;
    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.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    public class LoginCheckFilter implements Filter{

    private static List<String> notFilterURL;

    @SuppressWarnings("static-access")
    public void init(FilterConfig filterconfig) throws ServletException{
    this.notFilterURL= new ArrayList<String>();
    notFilterURL.add("/gpplatform/adminLog.jsp");
    notFilterURL.add("/gpplatform/errorPage.jsp");
    notFilterURL.add("/gpplatform/testJDBC.jsp");
    notFilterURL.add("/gpplatform/yzm.jsp");
    notFilterURL.add("/gpplatform/script/trim.js");
    }

    public void doFilter(ServletRequest req, ServletResponse res,
    FilterChain chain)throws IOException, ServletException{
    HttpServletRequest request= (HttpServletRequest) req;
    HttpServletResponse response= (HttpServletResponse) res;
    HttpSession session= request.getSession();

    boolean flag= true;
    String str= "/gpplatform"+request.getServletPath();

    for(String url:notFilterURL){
    if(str.equals(url)){
    flag= false;
    break;
    }
    }

    System.out.println(str+" "+flag);

    if(flag&&session.getAttribute("curr_admin")==null){
    //對(duì)不在notFilterURL集合路徑中的url進(jìn)行過濾
    System.out.println("<=====You haven't logged in!=====>");
    response.sendRedirect("/gpplatform/adminLog.jsp");
    }
    else{
    chain.doFilter(req, res);
    return;
    }
    }

    public void destroy(){}
    }  回復(fù)  更多評(píng)論
      
    # re: Struts1.2 驗(yàn)證用戶是否登陸 兩種方法(轉(zhuǎn))
    2011-05-05 16:16 | liangwu
    小弟初學(xué)java web開發(fā),正在研究filter和listener。

    以上是自己一個(gè)web工程的filter。通過設(shè)置一個(gè)不被過濾的url集合notFilterURL,實(shí)現(xiàn)在struts1中沒有的interceptor所完成的功能。


      回復(fù)  更多評(píng)論
      
    # re: Struts1.2 驗(yàn)證用戶是否登陸 兩種方法(轉(zhuǎn))
    2011-06-02 17:25 | liangwu
    /*增強(qiáng)版:利用spring容器初始化dao的bean,再用init方法獲取系統(tǒng)context得到該dao從而實(shí)現(xiàn)RBAC模型下對(duì)動(dòng)作權(quán)限的管理 */
    package com.gpPlatform.utils;
    /* 檢驗(yàn)管理員是否已經(jīng)登錄及是否擁有權(quán)限的過濾器*/
    import java.util.List;
    import java.util.Map;
    import java.util.Iterator;
    import java.util.Set;
    import java.util.Date;
    import java.io.IOException;
    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.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import com.gpPlatform.IConstants;
    import com.gpPlatform.services.ResourceDao;
    import com.gpPlatform.forms.AdminForm;

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.FileSystemXmlApplicationContext;

    public class SecurityCheckFilter implements Filter{

    private List<String> notFilterURL;

    private ResourceDao resourcedao= null;

    private Map<String,String> permits;

    private String getPermitId(String action_url){ //根據(jù)Map獲取動(dòng)作資源id
    this.permits= resourcedao.getResourceList();
    String rid_visited="NO_MATCH";
    Set<String> key = permits.keySet(); //獲取權(quán)限集map鍵集合
    for(Iterator<String> it=key.iterator();it.hasNext();){
    String k= it.next();
    if(k.equals(action_url)){
    rid_visited=permits.get(k);
    break;
    }
    }
    return rid_visited;
    }

    private boolean isPIdExist(AdminForm aform,String rid,boolean init){
    boolean flag=!init;
    if(!flag){
    String[] pArray= aform.getPermitList();
    for(String pid:pArray){
    System.out.println(pid);
    if(pid.equals(rid))
    return true;
    }
    }

    return flag;
    }

    public void init(FilterConfig filterconfig) throws ServletException{ //獲取系統(tǒng)context以傳遞屬性
    String configpath= "F:/tomcat 5.5.2/Tomcat 5.5/webapps/gpplatform/WEB-INF/appContext.xml";
    ApplicationContext context= new FileSystemXmlApplicationContext(configpath);
    IConstants iconstant=(IConstants)context.getBean("constants");
    resourcedao= (ResourceDao)context.getBean("resourcedao"); //不可setter直接注入,filter servlet容器先于spring生成
    notFilterURL = iconstant.getNotFilterURL();

    System.out.println("There are "+notFilterURL.size()+" urls free of filtering");
    }

    public void doFilter(ServletRequest req, ServletResponse res, //改寫doFilter方法檢驗(yàn)
    FilterChain chain)throws IOException, ServletException{

    HttpServletRequest request= (HttpServletRequest) req;
    HttpSession session= request.getSession();
    AdminForm aform= (AdminForm)session.getAttribute(IConstants.CURR_ADMIN_KEY);

    boolean flag1= true;
    boolean flag2= true;

    String str= request.getServletPath();

    if(str.indexOf(".jsp")!=-1||str.indexOf(".do")!=-1){
    for(String url:notFilterURL){
    if(str.equals(url)){
    flag1= false;
    break;
    }
    }
    }
    else
    flag1= false;

    if(str.indexOf(".do")!=-1&&request.getParameter("method")!=null&&!request.getParameter("method").equals("readInfo"))
    str += "?method="+request.getParameter("method"); //獲取一般的動(dòng)作參數(shù)
    else
    flag2= false;

    System.out.println("action str is "+str+" "+flag1+" "+flag2);
    if(flag1){
    if(aform==null){ //對(duì)不在免除過濾路徑集合中的url進(jìn)行過濾
    System.out.println("<=======You haven't Logged in yet!=======>"+(new Date()).toString());
    request.setAttribute(IConstants.LOGIN_ERROR_KEY, "抱歉,您還沒有登陸本系統(tǒng)%>_<%");
    request.getRequestDispatcher("/adminLog.jsp").forward(req, res);
    }
    else{
    if(!this.isPIdExist(aform, this.getPermitId(str), flag2)){
    System.out.println("<======You don't hava such permit!======>"+(new Date()).toString());
    request.setAttribute(IConstants.PERMIT_ERROR_KEY,"抱歉,您不具備當(dāng)前功能的權(quán)限⊙﹏⊙ ");
    request.getRequestDispatcher("/errorPage.jsp").forward(req, res);
    }
    else{
    chain.doFilter(req, res);
    return;
    }
    }
    }
    else{
    chain.doFilter(req, res);
    return;
    }
    }

    public void destroy(){}
    }  回復(fù)  更多評(píng)論
      
    # re: Struts1.2 驗(yàn)證用戶是否登陸 兩種方法(轉(zhuǎn))
    2012-02-03 16:46 | v和vj
    頂頂頂頂頂頂頂頂頂  回復(fù)  更多評(píng)論
      
    # re: Struts1.2 驗(yàn)證用戶是否登陸 兩種方法(轉(zhuǎn))
    2015-04-13 15:31 | asd

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 中文字幕av无码不卡免费| 亚洲色四在线视频观看| 亚洲乱亚洲乱妇无码| 在线永久看片免费的视频| 亚洲s色大片在线观看| 在线播放免费人成毛片乱码| 国产亚洲AV夜间福利香蕉149| 九九九国产精品成人免费视频| 国产一区在线观看免费| 国产亚洲综合一区二区三区| 亚洲高清无码综合性爱视频| kk4kk免费视频毛片| 亚洲乱码中文字幕久久孕妇黑人| 中国在线观看免费的www| 久久精品视频亚洲| 在线a免费观看最新网站| 精品亚洲国产成人| 国产精品99久久免费| 免费国产a理论片| 国产亚洲一区二区三区在线| 亚洲精品在线免费看| 亚洲精品无码不卡在线播放| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 亚洲精品无码专区2| 你懂的在线免费观看| 中文字幕亚洲综合精品一区| 成人免费无码大片A毛片抽搐| 精品国产日韩亚洲一区在线| 亚洲真人无码永久在线| 成年人免费的视频| 色九月亚洲综合网| 亚洲AV无码成人精品区在线观看| 999国内精品永久免费观看| 瑟瑟网站免费网站入口| 水蜜桃亚洲一二三四在线 | 最近免费中文字幕大全高清大全1 最近免费中文字幕mv在线电影 | 一级毛片免费播放| 亚洲精品中文字幕无码A片老| 国产午夜亚洲精品午夜鲁丝片| 91香蕉在线观看免费高清| WWW国产亚洲精品久久麻豆|