まず、新しいアプリから始めましょう。
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
それが役立つことを願っています!