5

私は Grails を初めて使用し、Shiro セキュリティを使用しています。ログインページのある小さなサイトを作成しました。ログインに成功すると、別のログインページにリダイレクトされます。

今、Shiro Security を実装したいと思います。そのプラグインと Shiro のクイック スタート アプリを新しい Grails プロジェクトで実行しました。

私が達成したいのは、クイック スタート ファイルとコードを使用して自分のページにセキュリティを実装するにはどうすればよいかということです。ガイドしてください。少し。そのクイックスタートからどのファイルを使用する必要があり、どのような変更を行う必要がありますか。?

肯定的な反応を待っています:)

4

1 に答える 1

11

まず、新しいアプリから始めましょう。

grails create-app ShiroDemo

shiro を BuildConfig.groovy の plugins セクションに追加してインストールします。

プラグイン { コンパイル ":shiro:1.1.4" }

認証コントローラーとワイルドカード レルムが必要です。

grails create-auth-controller
grails create-wildcard-realm

では、必要なロールと権限を持つダミー ユーザーを作成してみましょうbootstrap.groovy

import org.apache.shiro.crypto.hash.Sha256Hash
class BootStrap {
    def init = { servletContext ->
        def roleUser = new ShiroRole(name:'USER')
        roleUser.addToPermissions('auth:*')
        roleUser.addToPermissions('controller:action')
        roleUser.save(flush:true, failOnError: true)
        def testUser = new ShiroUser(username:'kermit',passwordHash:new Sha256Hash("password").toHex())
        testUser.addToRoles(roleUser)
        testUser.save(flush:true, failOnError: true)
    }
    def destroy = {
    }
}

線を見てくださいrole.User.addToPermissions。ここで、コントローラーとアクションにアクセス許可を付与します。役割に権限がない場合、ユーザーはアクセス拒否ページにリダイレクトされます。アクセス許可を指定する方法については、次の shiro プラグイン ページに適切な説明があります 。これらの権限をユーザーに直接追加することもできます。これは、テストの場合や、何か特別なことのために新しい役割を設定したくない場合に役立つことがあります。

ところで: 現在の shiro バージョンでは動作しない sha1hash ではなく、必ず sha256hash を使用してください。

最後に、/conf/SecurityFilters.groovyクラスを作成します。

class SecurityFilters {
    def filters = {
        all(uri: "/**") {
            before = {
                // Ignore direct views (e.g. the default main index page).
                if (!controllerName) return true

                // Access control by convention. 
                accessControl() 
            } 
        } 
    } 
}

これにより、すべてのコントローラーのアクセス制御がインストールされますが、ダイレクト ビュー (インデックス ページ) はインストールされません。

それでは、試してプロジェクトを実行してください。

grails run-app

それが役立つことを願っています!

于 2011-04-29T06:51:35.290 に答える