2011-12-07 22 views
0

私は単純なGrailsアプリケーションを構築しています。セキュリティのために、私はSpring SecurityプラグインとSpring Security UIを使用しています。 私は、ユーザーの3種類がしたい:Grails Spring Securityプラグインによる無限リダイレクト

  • 標準ユーザー(クライアント)、
  • サポートユーザーを
  • 管理ユーザー

クライアントがログインし、いくつかの要求を行います 、サポートが得られますそれらの要求と応答。管理者は、ユーザーの特権と役割などの管理を担当します。

だから、基本的に、私は3つの役割があります。

  • ROLE_USER
  • ROLE_SUPPORT
  • ROLE_ADMIN

彼/彼女は、ユーザーの役割に応じて別のページにリダイレクトされ、ユーザーがログインを。私は linkからのアドバイスに従ってこれを行いました。

これは機能します。しかし、時には、私は次のエラーを取得する:

Firefox has detected that the server is redirecting the request for this address in a way that will never complete. This problem can sometimes be caused by disabling or refusing to accept cookies.

これは私のUrlMappings.groovyです:

class UrlMappings { 

    static mappings = { 
     "/$controller/$action?/$id?"{ 
      constraints { 
       // apply constraints here 

      } 

     } 

     "/"(controller:'login', action:'auth') 
     "500"(view:'/error') 

    } 
} 

右aproachはこのために何ですか?万一私はすべての役割のために異なるコントローラを作るか、私は作るべき1 RequestController(ほとんどの作業は、要求ドメインクラスで行われます)と、たとえば、すべての役割のために異なるアクションを指定する - 例のUserList、supportList、adminListなどのために、私が持っている

+0

@Antoine編集していただきありがとうございます。今はるかに良い。 – drago

+0

あなたが時々言うとき、正確にそれはいつですか?あなたはいつもそれを特定のケースで再現できますか?これらのケースは何ですか? – omarello

+0

@omarello正常に動作していましたが、若干の変更を加えると、このループに入りました。私は正確な変更が何であったかを思い出すことはできません。だから私はさらにそれを研究するまで、リダイレクトのための要求コントローラのインデックスアクションを使用します。 – drago

答えて

2

やや異なる役割を持つGrailsアプリと同様の要件です。私がやっていることは以下の通りです:私にHomeControllerで次にUrlMappings.groovy

"/"(controller: "home") 

(これは正確に私のコードではありませんが、あなたのアイデアを得る)

def user 

def index = { 
    user = springSecurityService?.getAuthentication()?.details 

    def role = user.getRole() 
    if ('admin'.equals(role)) { 
     redirect(view:'admin') 
    } else if ('support'.equals(role)) { 
     redirect(view:'support') 
    } else { 
     redirect(view:'home') 
    } 
} 

私の推測では、あなたですリダイレクトの問題は、ログインページで何らかのエラーが発生した場合に発生します。私はあなたが例外をどのように処理しているのかを確認し、エラーを再度引き起こすログインページにリダイレクトしようとしないようにします。

関連する問題