Grails,Spring Security和Angular JS - 如何保护URL?

时间:2013-11-15 20:00:27

标签: rest angularjs grails spring-security

您好我使用Grails构建的后端和AngularJS中的前端构建应用程序。我想使用Grails Spring Security Plugin来为我的应用程序提供一些安全性,但我遇到了一些问题。首先,我不知道如何只允许具有指定角色的用户访问专用URL。

例如,我有3种类型的网址

/userspace/**  - (eg. http://localhost:8080/MyApp/#/userspace/settings -displays view with user's profile settings)
/adminspace/** - (eg. http://localhost:8080/MyApp/#/adminspace/usersManagement - displays view with registered users) 
/rest/** - (eg. http://localhost:8080/MyApp/rest/book - returns JSON list of books, http://localhost:8080/MyApp/book/123 - returns book as JSON with id=123.

我想为/userspace/ROLE_USER /adminspace/提供ROLE_ADMIN的访问权限。

我不知道我应该在Config.goovy设置哪些属性才能实现?在网址中有角度#吗?

我也不确定应该如何保护/rest/**。这些网址用于与后端进行通信,有时它们是由角度的$http服务从角度控制的所有视图控制器调用的,但有时它们是从受保护的视图中调用的。也许方法是让所有人都可以使用/ rest / ** urls并使用指定的注释,例如。 grails控制器中的@Secured(['ROLE_USER'])

我很感激帮助

1 个答案:

答案 0 :(得分:1)

这里讨论(当然不是特定于Angular):http://grails-plugins.github.io/grails-spring-security-core/docs/manual/guide/requestMappings.html

如果您有带注释的控制器,请在controllerAnnotations.staticRules地图中映射这些额外的网址。否则,请在数据库中使用Requestmaps,或在interceptUrlMap属性中使用一个大地图。