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

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

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

    像一顆晨土

    常用鏈接

    統計

    blogs

    life

    最新評論

    關于DWR與Servlet、安全

    使用DWR做Remote,完全繞過傳統的MVC框架,如Struts、Webwork,單用一個DWRServlet來做控制器。DWR向客戶端 暴露了服務端的服務接口,很有可能有沒有任何限制的情況下被客戶端調用所暴露的接口。如果使用傳統的MVC框架,可以很方便地解決很多問題諸如身份驗證、 權限控制等。而DWR提供的功能是給客戶端暴露服務接口。上面所涉及的問題卻少有牽涉。不過,解決方案還是有的。其中之一就是使用AOP,自已實現一些攔 截功能,例如結合Spring,使用DWR的Spring整合功能,給客戶端提供一個Spring的Bean,而這個Bean是經過代理的 (Proxy)。實際上已經保證了身份認證等動作完成了。而我們要多做的是,寫一些Spring的Bean來作攔截器。再在原有的服務上再加上一些 AOP。當然,DWR對于安全的還是提供了些設施的,基于J2EE的安全策略之上。感覺不是十分良好,所以沒用,也沒深入研究。:P

            很多時候,在做身份驗證及授權的時候可能會用到應用的環境,如ServletContext,Session等。那么在DWR中的服務或攔截器需要用到Session這些東西的時候,獲取是一件很簡單的事。通常有兩個辦法
            一、使用DWR的API。其實是一個靜態的方法,極其不推薦。所以示例也就免了。
            二、讓DWR自已注入需要的元素,這里講的元素僅限于:

    • HttpServletRequest
    • HttpServletResponse
    • HttpSession
    • ServletContext
    • ServletConfig

            做法是在服務里定義方法的時候,把以上的元素作為參數。在方法體內直接使用即可。而不必擔心它的來源,來源是DWR會自已根據參數的類型注入。在客戶端調 用的時候不需要提供這個參數。ServletContext之類的東西作為ThreadLocal的變量保存起來的。簡單的示例。

    1、服務代碼 

    package net.jf.ajax.session;

    import javax.servlet.http.HttpSession;

    public class Store {
      public void setAttribute(String name,String value,HttpSession session){
        session.setAttribute(name,value);
      }
      public String getAttribute(String name,HttpSession session){
        return (Stringsession.getAttribute(name);
      }
    }

    2、spring配置文件

          <beans>
                <bean id="store" class="net.jf.ajax.session.Store">
                </bean>
            </beans>

    3、dwr.xml 

    <dwr>
      <allow>
        <create creator="spring" javascript="store">
            <param name="beanName" value="store"/>
        </create>
      </allow>
    </dwr>

    以 上的代碼及配置文件可以達到目的:DWR與Spring結合,DWR直接使用Spring管理的Bean作為服務,當然,受Spring管理的Bean功 能一點都不減,復雜的如有著事務管理的Bean同樣有用。 而且盡管是Spring管理的Bean,方法的參數中有Servlet相關的參數,DWR同樣自動注入。

             現在去調試頁面看看我們暴露的接口及效果如何!在調試頁面找到store的服務,點擊進去,可以見到暴露的方法有兩個:

             一個是SetAttribute("","",AUTO),第三個參數表明自動注入,客戶端只需要提供前兩個參數即可。

            一個是GetAttribute(“”,AUTO),第二個參數表明自動注入,客戶只需要提供一個名字參數取值即可。

            在測試頁面提供的輸入框中測試兩個函數,SetAttribute填入name,jeff提交成功,在GetAttribute函數中填入name獲得一個返回值,正是jeff。至此,嘗試成功!

    posted on 2006-05-10 01:18 艾塵 閱讀(3941) 評論(7)  編輯  收藏 所屬分類: ajax

    評論

    # re: 關于DWR與Servlet、安全 2006-05-10 08:24 原創專欄 開源學習

    關于安全:
    http://getahead.ltd.uk/dwr/changelog/dwr20m1
    We take security very seriously. DWR 1.x has proved to be very secure so far, but that does not mean we rest on our laurels. DWR 2.0 introduces a lot of new code. Reverse ajax and script based session management are places where we could easily slip up.

    如果用dwr1.1,你可以繼承uk.ltd.getahead.dwr.DWRServlet,加session判斷

    這是以前寫的一篇筆記.
    http://m.tkk7.com/zkjbeyond/archive/2006/03/23/37029.html  回復  更多評論   

    # re: 關于DWR與Servlet、安全 2006-05-10 10:33 艾塵

    的確,上面的示例還是在1.1的基礎上做的,不知2.0的用法是怎樣了。另外,我用的方法一部分原因是不想直接使用DWR的API。其實繼承DWRServlet是個比較方便的辦法。:P  回復  更多評論   

    # re: 關于DWR與Servlet、安全 2006-05-10 10:46 huang2001net@21cn.com

    你的業務代碼被web層污染了,跟一個web層的action有什么區別?  回復  更多評論   

    # re: 關于DWR與Servlet、安全 2006-05-10 10:51 艾塵

    差不多。呵。目前我的想法是這樣,是在真正的服務之前加上一些攔截器,實際上被Web層的API污染的不是服務,而是這些增加的東西。但又不能等同于Web層的Action,看起來更像Filter。Action的東西放到客戶端去做了。
    如果有更好的做法,講一定要不吝賜教。:)  回復  更多評論   

    # re: 關于DWR與Servlet、安全 2006-05-17 17:45 FuCheng

    我覺得還是AOP來的好,畢竟安全驗證這些東西都是crosscutting concerns  回復  更多評論   

    # re: 關于DWR與Servlet、安全 2006-12-07 18:41 wangpeng

    你好,我有個類似的問題想請教.我做的是一個聲明的日志記錄模塊,用的是方法攔截器,攔截的是service,但是我現在取不到session,請問有什么方法能在我的方法攔截器中取到,還是有其他可以解決的方法?謝謝了.我的E-MAIL:wpmaomao@126.com  回復  更多評論   

    # re: 關于DWR與Servlet、安全 2007-07-10 14:04 wangpengfei

    一般的話都是在ACTION中級別配置攔截器,只要把servlet包導入
    通過ServletActionContext.getRequest().getSession()很容易得到  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 91国内免费在线视频| fc2成年免费共享视频18| 日本黄网站动漫视频免费| 亚洲电影中文字幕| 波多野结衣免费一区视频 | 日韩免费无砖专区2020狼| 亚洲午夜理论片在线观看| 好爽…又高潮了毛片免费看| 亚洲另类无码一区二区三区| 日本一线a视频免费观看| 国产亚洲精品美女久久久久| 亚洲精品国产精品国自产观看| 抽搐一进一出gif免费视频| 亚洲精品无码成人AAA片| 国产情侣久久久久aⅴ免费| 亚洲天天在线日亚洲洲精| 91成人免费观看网站| 亚洲精品GV天堂无码男同| 亚洲成av人片不卡无码久久| a级成人毛片免费图片| 亚洲欧洲国产经精品香蕉网| 国内自产拍自a免费毛片| 香蕉视频在线观看免费| 亚洲精品成人网站在线观看| 在线日本高清免费不卡| 亚洲国产成人无码AV在线| 久久亚洲国产精品123区| 最近中文字幕mv免费高清视频8| 亚洲综合色婷婷在线观看| 亚洲AV无码乱码在线观看牲色 | 亚洲另类精品xxxx人妖| 日本免费人成视频播放 | 一级做a爰片久久毛片免费陪| 亚洲色欲一区二区三区在线观看| **aaaaa毛片免费同男同女| 亚洲6080yy久久无码产自国产| 亚洲综合色自拍一区| 三年片在线观看免费大全| 国产免费人成视频在线播放播| 亚洲综合激情视频| 亚洲免费日韩无码系列 |