4

ログイン時に、ユーザーのロール (ロール ドメインで定義されたカスタム ロール) に基づいてユーザーを別の URL にリダイレクトする grails アプリケーションを作成しました。現在、Spring Security Core Grails プラグインをアプリケーションに統合しようとしているので、プラグインのドメイン モデルを使用する予定です。

LoginController の認証アクションがユーザーのログイン検証を行い、ユーザーがログインしている場合はデフォルトのターゲット URI にリダイレクトすることを理解しています。私の質問は、ログインしているユーザーのタイプが ROLE_ADMIN または ROLE_USER またはその他の ROLE であるかどうかをどのように知ることができますか? ここで権限を確認してから、別の URI にリダイレクトするにはどうすればよいですか?

また、ユーザーの検証がどのように行われるか、つまり春のセキュリティでデータベースに対してユーザー名とパスワードが検証される方法と場所を知りたいですか?

ありがとうございました。ジェイ・チャンドラン。

4

1 に答える 1

5

リダイレクトは で発生しorg.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandlerますが、プラグインはこのクラスを拡張しorg.codehaus.groovy.grails.plugins.springsecurity.AjaxAwareAuthenticationSuccessHandlerて Ajax ログインをサポートします。

ロールに基づいてリダイレクトの場所をカスタマイズする場合は、サブクラス化AjaxAwareAuthenticationSuccessHandlerしてオーバーライドしますonAuthenticationSuccess()。認証にアクセスできるため、付与された権限を調べて、それらに基づいてどこに行くかを決定できます。

次に、resources.groovy でプラグインの Bean を自分のものに置き換えます。

import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils

beans = {
   authenticationSuccessHandler(MyAuthenticationSuccessHandler) {
      def conf = SpringSecurityUtils.securityConfig

      requestCache = ref('requestCache')
      redirectStrategy = ref('redirectStrategy')
      defaultTargetUrl = conf.successHandler.defaultTargetUrl
      alwaysUseDefaultTargetUrl = conf.successHandler.alwaysUseDefault
      targetUrlParameter = conf.successHandler.targetUrlParameter
      ajaxSuccessUrl = conf.successHandler.ajaxSuccessUrl
      useReferer = conf.successHandler.useReferer
   }
}
于 2010-10-08T05:59:55.953 に答える