0
package hompage

import logindetails.*
import login.User
import grails.plugins.springsecurity.Secured;

class RedirectController
{
    def springSecurityService

    def index() { }

    /**
     * This method will redirect the user if it has the role "ROLE_ADMIN"
     */
    @Secured(['ROLE_ADMIN'])
    def adminhomepage =
    {
        render(view: "adminhome")
    }

    /**
     * This method will redirect the user if it has the role "ROLE_USER"
     */
    @Secured(['ROLE_USER'])
    def userhomepage=
    {
        render(view: "userhome")
    }
}

これは私のコードであり、ロールがROLE_ADMINの場合にのみadminhomeにリダイレクトし、ロールがROLE_USERの場合はuserhomeにリダイレクトしたいと考えています。

このコードの実装を手伝ってください。

私は netbeans IDE を使用していますが、import import grails.plugins.springsecurity.Securedの警告が表示されます (Java コードで一般的に表示される赤い感嘆符のように)。

unable to resolve class grails.plugins.springsecurity.Secured @ line 5, column 1.

インポートが存在する場合でも、取得できません。何が問題なのですか?

4

4 に答える 4

5

パッケージの名前が grails.plugins から grails.plugin に変更されました

import grails.plugin.springsecurity.annotation.Secured

これを使用してください。参照:ソース

于 2013-11-27T10:48:01.003 に答える
0

Netbeans でも警告が表示されます。それは私には何の影響もありません。すべてがまだ正常にコンパイルされ、実行されます。

@Secured アノテーションは、いかなる種類のリダイレクトも行いません。送信された後、そのアクションで許可されていることを確認するだけです。

私が理解していることを確認したい - 誰かが「adminHomeController/index」に行った場合、彼らが持っている役割に関係なく、「adminHomeController/adminhomepage.gsp」にリダイレクトされますか、それとも「adminHomeController/index.gsp」が提供されますか? それらがリダイレクトされた場合、提供したコードにはそれを引き起こす可能性のあるものは何もありません。それを行う URL マッピングはありますか?

それとも、誰かが ROLE_USER を持っていない場合でも、「adminHomeController/adminhomepage」にアクセスできるという本当の問題ですか? それが起こっている場合は、構成ファイルに次のものが含まれていることを確認してください。

grails.plugins.springsecurity.securityConfigType = "Annotation"

次に、アプリケーションを再起動し、ROLE_USER を持たないユーザーとして adminhomepage にアクセスしてみます。それでもアクセスできる場合は、実際に ROLE_USER を持っていないことを確認してください。

これがログイン時に誰かをリダイレクトすることである場合、カスタム AuthSuccessHandler を作成するなど、これを処理するためのより包括的な方法がありますが、それはもう少し複雑です。この方法でリダイレクトを行うには、次のようにします。

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

    def index() {
      if(ifAnyGranted("ROLE_ADMIN")) {
           redirect(action: 'adminhomepage')
      } else if(ifAnyGranted("ROLE_USER")) {
           redirect(action: 'userhomepage')
      }
    }

    def adminhomepage() {
        //admin stuff
    }

    def userhomepage() {
        //user stuff
    }
于 2012-05-16T22:28:22.973 に答える
0

コメントに記載されているのと同じチュートリアルに従い、同じ問題に遭遇しました。この投稿で既に述べたように、「エラー」によってコマンド ラインからのコードのビルドが妨げられることはありませんでした。しかし、Grails の初心者として、最も基本的なアプリケーションのゲームの早い段階で小さな赤い X を見ると、イライラすることがあります。

アプリはコマンド ラインからコンパイルおよび実行されるため、IDE に問題があることは間違いありません。プラグインを確認しましたが、Spring Security はリストされていませんでした。Plugins を右クリック -> Grails Plugin Manager を開き、STS 経由でインストールします。同じプラグインをアンインストールして再インストールします。古いバージョンの STS を実行しているので、新しいバージョンで修正されることを願っています。

これが、この古いスレッドに出くわした人の助けになることを願っています。

于 2013-04-22T22:52:17.910 に答える