1

Grailsを初めて使用し、Grailsアプリケーションにサードパーティのサーブレットを追加する方法があるかどうか疑問に思っていますか?

ワッフルをグライルで使おうとしています。https://github.com/dblock/waffle/blob/master/Docs/spring/SpringSecurityAuthenticationProvider.mdで説明されているように、Springセキュリティを使用してMVCアプリでWaffleを正常に使用できました。

私のMVCアプリでは、認証用に次のようなBeanを追加できました。

<bean id="waffleNegotiateSecurityFilter" class="waffle.spring.NegotiateSecurityFilter">
    <property name="provider" ref="waffleSecurityFilterProviderCollection"/>
    <property name="allowGuestLogin" value="false"/>
    <property name="principalFormat" value="fqn"/>
    <property name="roleFormat" value="both"/>
</bean>
4

2 に答える 2

0

フィルター マッピングを web.xml に追加する必要があります。

grails コマンドを使用して web.xml をインストールします。

> grails install-templates

web.xml ファイルを編集するより ( src/templates 内)

あなたが私たちに示したドキュメントに記載されているようにマッピングを追加します。

次に、bean 定義を grails リソースに追加します

/conf/spring/resources.groogy

xml Bean 定義を grails spring groovy DSL に変換するのは少し難しい場合があります。問題がある場合は、grails と spring に関するガイドを参照するか、ここで質問してください。

于 2013-02-22T09:34:31.673 に答える
0

私はこれに数日間苦労しており、プレーンな Grails 2.4.4 プロジェクトで次のことを行うことになりました。

grails create-app
grails install-templates

次にBuildConfig.groovyの修正

dependencies {
...
compile "com.google.guava:guava:18.0"
compile "com.github.dblock.waffle:waffle-jna:1.7.3"
compile "net.java.dev.jna:jna:4.1.0"
compile "net.java.dev.jna:jna-platform:4.1.0"
compile "org.slf4j:slf4j-api:1.7.9"
....

}

次に、次の内容で ..\META-INF の下にcontext.xmlを作成しました。

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE Context>
<Context>
    <Valve className="waffle.apache.NegotiateAuthenticator" principalFormat="fqn" roleFormat="both" protocols="Negotiate,NTLM" />
    <Realm className="waffle.apache.WindowsRealm" />
</Context>

そして、以下を..\templates\web.xmlファイルに追加しました。

<display-name>/@grails.project.key@</display-name>
<security-constraint>
    <display-name>Waffle Security Constraint</display-name>
    <web-resource-collection>
        <web-resource-name>Protected Area</web-resource-name>
        <url-pattern>/</url-pattern>
        <http-method>DELETE</http-method>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
        <http-method>PUT</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>Everyone</role-name>
    </auth-constraint>
</security-constraint>
<security-role>
    <role-name>Everyone</role-name>
</security-role>
....
....

実際に機能することを確認するために、index.gspに行を追加しました。

<p>You are logged in as remote user <b>${request.getRemoteUser()}</b> in session <b>${session.getId()}</b>.</p>

これを Tomcat 7.0.57 でテストしたところ、Tomcat lib にいくつかの jar を追加して動作させる必要がありました。slf4j -api-1.7.9.jar、guava-18.0.jar、jna-platform-4.1.0.jar、jna-4.1.0.jar、waffle-tomcat7-1.7.3.jar、waffle-jna-を追加しました1.7.3.jar。同じ jar が BuildConfig.groovy にも追加されているのに、なぜこれが実際に必要なのか、まだ疑問に思っています。

于 2015-02-09T14:37:40.963 に答える