我是Grails的新手并且已经对Shiro插件进行了一些阅读,但是我不确定它是什么,我希望有人可以指出我正确的方向。
对于我在计算机科学的最后一年项目,我正在创建用Grails编写的在线团队协作工具。该申请的结构如下:
应用程序 - 有许多公司使用它 公司有很多项目 项目有很多用户等。
我确保用户登录时的最佳方式是什么,他们只能看到公司和项目的内容(如果他们是管理员),或者只有他们的项目(如果他们是普通用户)。显然,我不希望一家公司的用户能够访问其他公司项目信息等。
非常感谢任何帮助。
答案 0 :(得分:-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()
。
最佳实施取决于您应用的架构。如果您需要更多帮助,则必须提供有关应用的更多详细信息。
希望有所帮助!