2

我对 Grails 完全陌生,并且已经阅读了 Shiro 插件,但我不确定这是我所追求的,所以希望有人能指出我正确的方向。

对于我计算机科学的最后一年项目,我正在创建用 Grails 编写的在线团队协作工具。该应用程序的结构如下:

应用程序 - 有很多公司在使用它 公司有很多项目 项目有很多用户等。

我确保用户登录时的最佳方式是什么,如果他们是管理员,他们只能看到他们公司和项目的内容,或者如果他们是普通用户,他们只能看到他们的项目。显然,我不希望一家公司的用户能够访问其他公司的项目信息等。

任何帮助深表感谢。

4

1 回答 1

-2

通常,有很多方法可以确保您期望的行为。

我建议将 shiro 与标准 grails 过滤器结合使用:

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 回答