2011-01-18 11 views
0

私は、アノテーションまたはリクエストマッピングを使用して、特定のロールによってACTIONへのアクセスを制限できることを知っています。しかし、今私は別の状況があります。Grails Spring Security Pluginを使用してアクションにアクセスする前にログインする必要がありますか?

自分のサイトのすべてのユーザーが投稿を作成でき、自分の投稿をに公開、非公開、または他のユーザーと共有することができます。私は、ユーザーが投稿を閲覧する権利を持っているかどうかを指定するデータベーステーブルPERMISSIONによって共有投稿を実装します。

ここで問題が発生するのは、顧客がダイレクトリンクを介して投稿にアクセスするときに、どのように表示するかを決定するにはどうすればよいですか? 3つの状況があります:ポストがプライベートで誰も(ないログイン ユーザーを含む)に

  • で見ることができるよう

    1. ポストはこれだけで、ログイン所有者がそれを見ることができ、公開されて
    2. 投稿は共有されているため、共有されているログインユーザーのみを意味し、 オーナーが閲覧できます。

    私はこのように処理する:OK:要求された投稿が公開されている場合は

    1. リクエストされた投稿がプライベート/共有の場合: お客様をログインページにリダイレクトします。 ログイン後、ユーザーは彼が見たいページに をリダイレクトします。

    ここでの問題は、私は、コントローラ/認証アクションをログインするユーザーをリダイレクトすることができますが、その後、私はそれをバックリダイレクトする方法がわからないということです。すべての投稿へのリンクはpost_idによって異なるので、私は使用できませんSpringSecurityUtils.securityConfig.successHandler.defaultTargetUrl

    これを行う方法を知っている人はいますか?

  • 答えて

    0

    私はこの問題のために迅速な回避策を見つけた:ユーザーがログインしている

    1. 場合:ユーザーの権限を確認し、適切な結果を返します。
    2. ユーザがログインしていない場合は、次のビューのアクションでは、によってpost_idの設定:

      session.post_id = 8

    3. ログインコントローラ/認証アクションにユーザーをリダイレクトします。

    4. チェック・ロール・アクション(これはConfig.groovyにあるgrails.plugins.springsecurity.successHandler.defaultTargetUrlです)、session.post_idが存在する場合は、これを使用して、viewアクションにリダイレクトするためのリンクを構築します。リダイレクトする前に、session.post_idをクリアしてください。
    1

    Dunno about grailsですが、春のセキュリティには、認証成功時にユーザーを指定されたURLにリダイレクトするために使用できるspring-security-redirectパラメータがあります。

    +0

    おかげで、それはそのパラメータを持っています。しかし、ここでのことは、リンクが固定されていないことです。リンクをpost_idで作成する必要があります。 –

    1

    アクションが呼び出される前に実行される独自のフィルタを追加して、そこに投稿権限の確認を行うことができると思います。 Grailsフィルタhereの詳細については、こちらをご覧ください。

    +0

    私はGrailsFilterを今stuydingしています。それが動作することを期待してください:) –

    +0

    @Hoàng、素晴らしい、私はそれがどのように行くのか教えてください。 :-) – Maricel

    +0

    ですが、リダイレクトした後、以前の操作に戻すにはどうすればよいですか? –

    1

    Grails Spring Security ACLプラグインを見ましたか?私は非常によく、それを知らないが、特定のインスタンスへのアクセスを制限するために設計されています:

    http://grails.org/plugin/spring-security-acl

    +0

    おかげさまで、ありがとうございました。実際、私は戻って別のプラグインを利用するには遠すぎます。多分私は後でプロジェクトのためにそれを見てみましょう –

    関連する問題