2012-01-20 13 views
0

私は、各ユーザーが複製されたサイトで自分のページをカスタマイズできる必要があります。コントローラをgrails - 複製されたサイトを設定する方法?

somedomain.com/someController/JohnDoe 

綴り、これは

サブを使用し
somedomain.com/JohnDoe 

のようなものに対して、長いドメイン名を入力する人々を強制的に除い:Grailsのでは、これを実行する最も簡単な方法があるようですドメインは別のアプローチかもしれませんが、自動的に作成する必要があります。つまり、誰かが参加するときです。

Grailsがこのような要件/ニーズ(複製サイト)をサポートする主な方法と、それぞれの利点/欠点のいくつかを明確にしてください。

おかげで、レイ


編集:以下トマシュの編集ごとに、アクションの最も簡単なコースは明確ではありません。あなたがこれについての洞察を持っているならば、分かち合ってください。

答えて

1

これはgrailsでUrlMappingsと呼ばれます。あなたは宣言する必要があります:

"/$username?" { 
    controller = 'someController' 
    action = 'user' 
} 

それはsomeController、usernameというアクションuserとオプションの変数にリダイレクトします。

この解決策には1つのキャッチがあります。あなたが訪れた1つのレベルのパスがすべてこのルールに合格し、someControllerに移動します。あなたはsomedomain.com/booksに行くことができません。それは上記のルールを通過し、someController#userparams['username']='books'で従います。次に、デフォルトのアクションを使用することはできません。しかし、他のすべてのパスに少なくとも1つのスラッシュがあると判断した場合は、 /books/listあなたはこの解決策に従うことができます

編集:私は間違っていました。私が期待したようにそれは動作しません。 Urlマッピングが定義されている順に適用されると思っていました。説明されているように、それは当てはまりません。here。さらに悪い - 文書化されていない(GRAILS-6246)。ほとんどの具体的な説明は、ピーターLedbrookから来ている:

それは特異アルゴリズムを使用するため、最も具体的な一致が

を適用する必要があります。次に試す必要があります。私はあなたが安全な解決策を使用し、/user/usernameの解決策に固執することをお勧めします。

+0

こんにちはTomasz - あなたから聞いてうれしい - これは良い解決策のように思えます。あなたが考えることができるセキュリティ上の問題はありますか?少なくとも1つのスラッシュを持つ他のパスについては、これでもデフォルトのアクションが許可されますが、それは正しいですか? – Ray

+0

@レイこのソリューションでは特別なセキュリティ問題は見つかりません。少なくとも1つのスラッシュでデフォルトアクションを許可します。 –

+0

クール、ありがとう。行く良い方法のように見える。 – Ray

関連する問題