2013-11-15 40 views
0

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

比如我有3种类型的URL

/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中设置哪些属性以使其成为可能?有没有在url中使用angular的#?我也不确定我应该如何保护/rest/**。这些URL用于与后端进行通信,有时它们被角度的角度控制器的角度的$http服务调用,所有服务都可见,但有时它们会从受保护的视图中调用。也许方法是让所有人都可以使用/休息/ **网址,并使用指定的注释,例如。在grails控制器中使用@Secured(['ROLE_USER'])

我会帮忙

回答

1

这是这里讨论(并不特指当然角)感激:http://grails-plugins.github.io/grails-spring-security-core/docs/manual/guide/requestMappings.html

如果您注解控制器,在controllerAnnotations.staticRules地图这些多余的网址。否则,使用数据库中的Requestmaps或interceptUrlMap属性中的一个大地图。

+0

谢谢你的工作。我不知道这是否是一个错误,但Spring Security文档说我应该使用:'grails.plugin.springsecurity.controllerAnnotations.staticRules'。直到我将其更改为'grails.plugins.springsecurity.controllerAnnotations.staticRules',它才能工作。也许这对某人会有所帮助。 – akn

+0

我不确定你使用的是什么版本的插件。我有的链接是2.0插件,但1.2文档在http://grails-plugins.github.io/grails-spring-security-core/docs/manual.1273/guide/5%20Configuring%20Request% 20Mappings%20to%20Secure%20URLs.html –