<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 艾塵 閱讀(3948) 評論(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://www.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()很容易得到  回復  更多評論   


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲一区二区三区播放在线| 亚洲狠狠婷婷综合久久久久 | 99视频在线精品免费| 亚洲欧洲国产成人综合在线观看| 亚洲精品乱码久久久久久自慰| 国产av无码专区亚洲av毛片搜| 岛国岛国免费V片在线观看 | 亚洲精品视频在线观看你懂的| 亚洲av成本人无码网站| 亚洲a一级免费视频| 亚洲AV网站在线观看| 亚洲AV无码成人精品区在线观看| 国产免费AV片在线观看播放| 色婷婷7777免费视频在线观看| 免费黄色一级毛片| 亚洲一区二区三区无码影院| 四虎影视久久久免费观看| 国产一卡2卡3卡4卡无卡免费视频| 精品亚洲aⅴ在线观看| 最刺激黄a大片免费网站| 亚洲成AV人片久久| 日韩精品无码专区免费播放| 亚洲精品免费在线观看| 亚洲一区免费在线观看| 久久亚洲精品国产精品黑人| 性无码免费一区二区三区在线| 亚洲精品国产第1页| 国内精品免费视频自在线| 特级毛片免费观看视频| 在线亚洲精品自拍| 又硬又粗又长又爽免费看 | 午夜成人免费视频| 日韩欧美亚洲国产精品字幕久久久| 亚洲国产天堂久久久久久| 免费国产99久久久香蕉| 91亚洲性爱在线视频| 俄罗斯极品美女毛片免费播放| 亚洲免费视频网址| 亚洲av成人一区二区三区在线观看| 99在线免费观看| 亚洲二区在线视频|