2011-04-28 17 views
4

Grailsに新しくいくつかのShiroセキュリティを使用しました。 私はログインページで少しのサイトを作りました。ログインに成功すると、私は別のログインページにリダイレクトされます。私のプロジェクトでGrailsのShiroセキュリティを実装する方法

私はShiro Securityを実装したいと思います。私は新しいGrails ProjectでShiroのプラグインとクイックスタートアプリを実行しました。

クイックスタートファイルとコードを使用して私自身のページに自分のセキュリティを実装する方法を教えてください。ご案内ください。少し。クイックスタートからどのファイルを使用すればよいのですか? ?いくつかの肯定応答を待っている:)新鮮なアプリで

答えて

9

ましょう最初のスタート

grails create-app ShiroDemo 

は今BuildConfig.groovyのプラグインセクションに追加shirobyをインストール:

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

認証コントローラとワイルドカードが必要ですALM:

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プラグインページで権限を指定する方法については、よくご存知でしょう。http://www.grails.org/plugin/shiro 残りのアプリケーション機能に対しては、さらに権限を追加する必要があります。 これらの権限をユーザーに直接追加することもできます。テストする場合や、特別な機能のために新しい役割を設定したくない場合に便利です。

btw:現在のshiroバージョンでは動作しないsha1hashではなくsha256hashを使用してください。

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() 
      } 
     } 
    } 
} 

これは、すべてのコントローラではなく、ダイレクトビュー(Googleのインデックスページ)のアクセス制御をインストールします:私たちがしなければならない

最後の事は/conf/SecurityFilters.groovyクラスを作成することです。

は今それを試してみると、プロジェクトを実行します。助け

grails run-app 

希望を!

+0

親愛なるラルフ。もちろん、それはユーザーとロールのドメインクラスを追加する必要があります。ユーザーとロールのドメインのコンテンツを編集してください。お願いします。 :)また、コマンドgrails generate-viewsを使用してビューを作成する必要がありますか? – Shah

+0

例が完成し、動作しています - ShiroRoleとShiroUserは上記のステートメントによって生成されます! – rdmueller

+0

親愛なるラルフあなたGudingsは完璧なThnks ..まあ今私はすでにユーザーとロールクラスとインデックスページを持ってほしい。 (ビュー)。 UserControllerという名前のコントローラがあり、ログインとログアウトのアクションがあります。今、どのようにそのセキュリティをそのコードに適用できますか? – Shah

関連する問題