Rya*_*row 7 authentication rest grails spring
如何使用Spring安全性配置grails应用程序,以便一组url将未经身份验证的用户重定向到http响应代码为200的自定义登录表单,而另一组url正在实现restful web services并且必须返回401/not未经身份验证的客户端的授权响应,以便客户端应用程序可以使用用户名和密码重新发送请求以响应401.
我当前的配置可以使用自定义登录表单处理第一种情况.但是,我需要为restful接口url配置其他类型的身份验证,同时保留人机接口的当前行为.
谢谢!
如果我理解你想做什么,我之前遇到了同样的问题!但使用Spring Security grails插件很容易解决它!因此,首先,您必须将应用程序设置为使用基本身份验证:
grails.plugins.springsecurity.useBasicAuth = true
Run Code Online (Sandbox Code Playgroud)
因此,您的宁静服务将尝试登录,如果它不起作用,它将转到401!这很简单,但您还需要使用自定义表单才能正确登录?!所以你可以配置一些URL进入正常的登录策略,如下所示:
grails.plugins.springsecurity.filterChain.chainMap = [
'/api/**': 'JOINED_FILTERS,-exceptionTranslationFilter',
'/**': 'JOINED_FILTERS,-basicAuthenticationFilter,-basicExceptionTranslationFilter'
]
Run Code Online (Sandbox Code Playgroud)
所以注意到,在上面,来到URL/api /的所有东西都将使用Basic Auth,但是任何不是来自/ api /的东西都使用普通的身份验证登录表单!
编辑
更多信息请访问http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/guide/16%20Filters.html
我遇到了同样的问题,但没有找到好的解决方案。我真的很期待一个干净的解决方案(在多租户的情况下)。
我最终手动验证了第二个系统的状态和登录部分,该系统不应重定向到登录页面(因此我没有使用“安全”注释)。我使用springSecurityService.reauthenticate()(用于手动登录)springSecurityService.isLoggedIn()并在第二个系统的每个控制器中手动执行此操作。如果他没有,我就会重定向到特定页面。
我不知道您的第二个系统是否可以承受这种解决方法。
| 归档时间: |
|
| 查看次数: |
2999 次 |
| 最近记录: |