2

私は Grails にまったく慣れておらず、Shiro プラグインについていくつか読んだことがありますが、それが何を求めているのかよくわかりません。誰かが私を正しい方向に向けてくれることを願っています。

コンピューター サイエンスの最終年度のプロジェクトとして、Grails で記述されたオンライン チーム コラボレーション ツールを作成しています。アプリケーションは次のように構成されています。

アプリケーション - それを使用している多くの企業がある 企業には多くのプロジェクトがある プロジェクトには多くのユーザーがいる など

ユーザーがログインしたときに、管理者の場合は会社とプロジェクトのコンテンツのみ、一般ユーザーの場合はプロジェクトのみを表示できるようにする最善の方法は何ですか。明らかに、ある会社のユーザーが他の会社のプロジェクト情報などにアクセスできるようにしたくありません。

どんな助けでも大歓迎です。

4

1 に答える 1

-2

一般に、目的の動作を保証する方法は多数あります。

標準の grails フィルターと組み合わせて shiro を使用することをお勧めします。

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

                accessControl {
                    // add your logic here to determine if user has access or not
                    // return true if user has access, false otherwise

                    // get current user
                    def user = yourService.getCurrentUser()
                    // get projects the user is allowed to access
                    def projects = yourService.getProjectsOfUser(user)
                    // get the project the user tries to access
                    def currentProject = Project.get(params.projectId)

                    // is current project in list of permitted projects?
                    return project.contains(currentProject)
                }
            } 
        }
    } 
}

または、独自に実装してPermission使用することもできますSecurityUtils.subject.isPermitted()

最適な実装は、アプリのアーキテクチャによって異なります。さらにヘルプが必要な場合は、アプリの詳細を提供する必要があります。

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

于 2012-11-24T13:12:25.507 に答える