Grails SpringSecurity Rest Basic auth + Login Form

Posted

技术标签:

【中文标题】Grails SpringSecurity Rest Basic auth + Login Form【英文标题】: 【发布时间】:2014-05-29 18:48:14 【问题描述】:

我在使用 Spring Security (SSC) 的 Grails 应用程序中遇到以下问题。我的应用应该提供一些可浏览的页面以及一个 Restful API。

在浏览器中使用应用程序时,应用程序应显示 SSC 和登录/注销控制器使用的登录表单。但我也想使用具有相同 URI 的替代性 BasiAuthentication。

例如:如果我从浏览器调用 /myApp/testCall,它应该显示登录表单,以防用户尚未登录。如果用户已登录,它应该可以正常处理。但是,如果我使用 Authorization Header 调用 /myApp/testCall,那么应用程序应该会识别这一点并通过 Basic Auth 对用户进行身份验证。

到目前为止,我已经得到了什么,无论是基本身份验证还是登录表单独立,但不是这个想要的 bahviour。一旦我在我的应用程序中激活了 basiAuth,它就会一直显示浏览器的默认登录表单(基本身份验证浏览器登录),但它应该显示 LoginForm。

希望有人能帮我解决这个问题,我需要以某种方式将负责显示登录表单的过滤器放在基本身份验证过滤器的前面,但在另一种情况下,如果我提供基本身份验证凭据,它应该只是让我登录。

【问题讨论】:

【参考方案1】:

上周我有一个类似的question,虽然不能完全回答您的问题,但它可能会帮助您入门。会将此添加为评论,但我没有代表。

【讨论】:

谢谢,这或多或少类似于我的问题。我现在的解决方案是将 UrlMappings 分成两部分。一部分用于 API(仅使用基本身份验证),另一部分用于可浏览部分。 还发现了一篇很棒的博文:asoftwareguy.com/2014/03/17/… 我也读过这个,坦克。刚才我如前所述更改了 Url 方案,最后遇到了这个错误,这也是我认为的第一个问题的原因。 SpringSecurity Bug

以上是关于Grails SpringSecurity Rest Basic auth + Login Form的主要内容,如果未能解决你的问题,请参考以下文章

Grails:弹簧安全插件 - 错误 springsecurity.GormPersistentTokenRepository

Grails/SpringSecurity:如何在不被识别的情况下创建用户?

Grails,SpringSecurity - 如果未记录,则禁用重定向

Grails 3 - springSecurity reauthenticate 和 SessionRegistry

Grails、Vaadin 7 和 SpringSecurity:授权不起作用

Grails 3 - springSecurity 使用密码重新验证