2013-06-09 4 views
5

私は、Grailsの中に、以下のURLマッピングを使用します、 "ログアウト" ...

すなわち、mydomain.com/user/show/someusernameする mydomain.com/someusernameべきルート、 mydomain.com/loginはmydomain.com/user/show/へのルートいけませんログイン。

+0

* user/show/login *とはどういう意味ですか? 'login'はアクションですか? – dmahapatro

+0

mydomain.com/someusernameはmydomain.com/user/show/someusernameにルーティングする必要があります。 mydomain.com/loginからmydomain.com/user/show/loginにルーティングしないでください。 – confile

答えて

14

あなたはこのマッピングのためcontrainstsを使用することができます。

"/$id"{ 
    controller = "user" 
    action = "show" 
    constraints { 
    //add a validator for $id from url mapping 
    id(validator: { 
     return !(it in ['login', 'logout']) 
    }) 
    } 
}  
+0

それはクールだ、あなたがそれを行うことができるか分からなかった! :) – elias

2

filterを使用し、そこからリダイレクトします。あなたはコントローラやアクションにそれが特定したい場合は

class UrlMappingFilters { 
    def filters = { 
     filterUrlKeywords(controller: '*', action: '*') { 
      def keywords = ['login', 'logout'] 
      before = { 
       if (params.id in keywords) { 
        // redirect to start, or render error... 
        redirect(uri: '/') 
        return false 
       } 
      } 
     } 
    } 
} 

'*'の代わりにその名前を使用します。

続きを読む:

1

私はRESTベースのエンドポイント用のもののこのタイプを行っています数多くの時間を費やしており、Grailsは十分理解できるほどスマートです あなたが欲しいもの。 UrlMappingsファイルの順序は重要であることに注意してください。ログイン方法をしていますが、「/ユーザID」を打ったとき、あなたがに送信されます。そして、あなたは「/ログインを」ヒットするときに認証に行きます

class UrlMappings { 
    static mappings = { 
     "/login" { controller: 'auth', action: 'login' } 
     "/logout" { controller: 'auth', action: 'logout' } 
     "/$id" { controller: 'user', action: 'view' } 
    } 
} 

:たとえば、あなたがこれを定義することができます

user:view:期待どおりのユーザーID。

関連する問題

 関連する問題