<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 16. Guice # 16. Guice Shiro Guice 集成是在 Shiro 1.2 添加的。 這個頁面覆蓋了 Shiro 融入 基于 Guice 的應用程序使用標準方法 Guice 的約定和機制。 閱讀這個集成文檔之前,你應該至少有點熟悉 Guice。 ## Overview 概述 shiro-guice 提供了三個 Guice 模塊可以包含在您的應用程序。 - ShiroModule - 提供基本的集成設置 SecurityManager ,任何 Realms 和任何其他配置 Shiro。 - 使用這個模塊通過擴展它并添加您自己的自定義配置。 - ShiroWebModule - 的延伸 ShiroModule 設置網絡環境,還允許過濾器鏈配置。 這使用 [Guice Servlet Module](http://code.google.com/p/google-guice/wiki/ServletModule) 配置過濾器,因此要求設置。 - 就像 ShiroModule 使用這個模塊,通過擴展它并添加您自己的自定義配置。 - ShiroAopModule - 使用 [Guice AOP](http://code.google.com/p/google-guice/wiki/AOP) 實現Shiro AOP 注釋。 這個模塊主要是關心適應Shiro AnnotationMethodInterceptors 到 Guice 方法攔截器模型。 - 通常使用這個模塊通過簡單地安裝它。 然而,如果你有你自己的 Shiro AnnotationMethodInterceptors ,他們可以很容易地注冊通過擴展它。 ## Getting Started 開始 最簡單的配置是擴展 ShiroModule 安裝您自己的 Realm 。 ``` class MyShiroModule extends ShiroModule { protected void configureShiro() { try { bindRealm().toConstructor(IniRealm.class.getConstructor(Ini.class)); } catch (NoSuchMethodException e) { addError(e); } } @Provides Ini loadShiroIni() { return Ini.fromResourcePath("classpath:shiro.ini"); } } ``` 在這種情況下,會在用戶和角色配置 shiro.ini 文件。 *Shiro.ini 使用 Guice* *重要的是要注意,在上面的配置,只有 用戶 和 角色 部分使用ini文件。* 然后,Guice 模塊是用來創建一個注射器,注射器是用來獲得一個 SecurityManager 。 下面的例子具有同樣目的的前三行 [快速入門](http://shiro.apache.org/10-minute-tutorial.html#10MinuteTutorial-Quickstart.java) 的例子。 ``` Injector injector = Guice.createInjector(new MyShiroModule()); SecurityManager securityManager = injector.getInstance(SecurityManager.class); SecurityUtils.setSecurityManager(securityManager); ``` ## AOP Shiro 包括幾個注釋和執行授權對于通過 AOP 方法攔截器非常有用。 它還提供了一個簡單的 API 編寫 Shiro-specific 方法攔截器。 shiro-guice 支持這個的 ShiroAopModule 。 要使用它,只需實例化并安裝模塊和應用程序模塊和你 ShiroModule 。 ``` Injector injector = Guice.createInjector(new MyShiroModule(), new ShiroAopModule(), new MyApplicationModule()); ``` 如果你有寫自定義攔截器,符合 Shiro 的 api,您可能會發現它有用的擴展 ShiroAopModule 。 ``` class MyShiroAopModule extends ShiroAopModule { protected void configureInterceptors(AnnotationResolver resolver) { bindShiroInterceptor(new MyCustomAnnotationMethodInterceptor(resolver)); } ``` ## Web shiro-guice 的網絡集成設計集成 Shiro 及其過濾范式與 Guice servlet 模塊。 如果您正在使用 Shiro 在 web 環境中,并使用 Guice servlet 模塊,那么你應該延長 ShiroWebModule 而不是 ShiroModule。 你的網絡。 xml 應該設置 Guice servlet 模塊的建議。 ``` class MyShiroWebModule extends ShiroWebModule { MyShiroWebModule(ServletContext sc) { super(sc); } protected void configureShiroWeb() { try { bindRealm().toConstructor(IniRealm.class.getConstructor(Ini.class)); } catch (NoSuchMethodException e) { addError(e); } addFilterChain("/public/**", ANON); addFilterChain("/stuff/allowed/**", AUTHC_BASIC, config(PERMS, "yes")); addFilterChain("/stuff/forbidden/**", AUTHC_BASIC, config(PERMS, "no")); addFilterChain("/**", AUTHC_BASIC); } @Provides Ini loadShiroIni() { return Ini.fromResourcePath("classpath:shiro.ini"); } } ``` 在前面的代碼中,我們已經綁定的 IniRealm 和設置四個過濾器鏈。 這些鏈相當于以下 ini 配置。 ``` [urls] /public/** = anon /stuff/allowed/** = authcBasic, perms["yes"] /stuff/forbidden/** = authcBasic, perms["no"] /** = authcBasic ``` shiro-guice,過濾器名稱 Guice 的鑰匙。 所有可用默認的 Shiro 過濾器是常量,但是你并不僅限于這些。 為了使用一個自定義過濾器過濾器鏈,你要做的事情 ``` Key customFilter = Key.get(MyCustomFilter.class); addFilterChain("/custom/**", customFilter); ``` 我們仍然需要告訴 guice-servlets Shiro 過濾器。 自 ShiroWebModule 是私人的,guice-servlets 不給我們揭露一個過濾器映射的方法,我們必須手動綁定它。 ``` ShiroWebModule.guiceFilterModule() ``` 或者,在一個應用程序模塊, ``` ShiroWebModule.bindGuiceFilter(binder()) ``` ## Properties 屬性 許多 Shiro 類暴露通過 setter 方法配置參數。 shiro-guice 注入這些如果找到一個綁定 @Named("shiro.{propName}")。 例如,設置會話超時,你可以做以下的事情。 ``` bindConstant().annotatedWith(Names.named("shiro.globalSessionTimeout")).to(30000L); ``` 如果這個范式對你不起作用,你也可以考慮使用提供者直接實例化對象和調用setter。 ## Injection of Shiro Objects 注入對象 shiro-guice 使用 Guice TypeListener 對本地執行注射 Shiro 類(類的子目錄 org.apache.shiro 但不是 org.apache.shiro.guice )。 然而, Guice 只考慮顯式綁定類型作為候選人 TypeListeners ,所以如果你有一 個Shiro 對象,你想要注射,你必須顯式聲明它。 例如,設置 credentialsmatcher 領域,我們需要添加以下綁定: ``` bind(CredentialsMatcher.class).to(HashedCredentialsMatcher.class); bind(HashedCredentialsMatcher.class); bindConstant().annotatedWith(Names.named("shiro.hashAlgorithmName")).to(Md5Hash.ALGORITHM_NAME); ``` ## 為文檔加把手 我們希望這篇文檔可以幫助你使用 Apache Shiro 進行工作,社區一直在不斷地完善和擴展文檔,如果你希望幫助 Shiro 項目,請在你認為需要的地方考慮更正、擴展或添加文檔,你提供的任何點滴幫助都將擴充社區并且提升 Shiro。 提供你的文檔的最簡單的途徑是將它發送到用戶[論壇](http://shiro-user.582556.n2.nabble.com/)或[郵件列表](http://shiro.apache.org/mailing-lists.html) *譯者注:*如果對本中文翻譯有疑議的或發現勘誤歡迎指正,[點此](https://github.com/waylau/apache-shiro-1.2.x-reference/issues)提問。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看