首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不需要表单登录的Spring安全性

不需要表单登录的Spring安全性
EN

Stack Overflow用户
提问于 2012-08-16 10:59:11
回答 1查看 19.5K关注 0票数 6

我在我的应用程序Spring控制器中实现了Spring安全表达式:

代码语言:javascript
复制
@Controller
@RequestMapping("init")
public class InitController {
    @PreAuthorize("hasRole('ROLE_ADMIN')")
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public @ResponseBody String home(){
        return "This is the init page";
    }
}

使用此安全配置:

代码语言:javascript
复制
<http auto-config="true" create-session="stateless" use-expressions="true">
    <intercept-url pattern="/_ah*" access="permitAll" />
    <intercept-url pattern="/init/*" access="hasRole('ROLE_ADMIN')"/>
    <intercept-url pattern="/init*" access="hasRole('ROLE_ADMIN')"/>
</http>

但是,当访问该资源时,会显示默认的Spring登录表单(http://localhost:8888/spring_security_login),但我不希望这种情况发生,我只希望将凭证插入到请求头中,如“x授权键”或任何适合该场景的内容。

解决这个问题的可能办法是什么?

  • 在请求中只拥有x授权密钥是件好事吗?
  • 如果是这样的话,它如何与Spring安全机制相匹配,这就是它如何与"hasRole“表达式相匹配
  • 重要的是,我的web服务是无状态的,并且每个请求都经过身份验证。
  • 最后,如何处理Spring安全,而不必处理Spring登录表单

标题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-16 12:23:34

您可能应该阅读有吗?上的描述,然后删除它以禁用form-login。如果您专门配置要使用的内容,您的配置将更加清晰。

从您的问题中不清楚您希望在x-authorization-key头中包含哪些内容。如果您只是使用客户端Id和共享机密进行身份验证,那么您也可以使用基本身份验证,因为它已经被开箱即用,您只需将<http-basic />添加到您的配置中即可。如果您有一些更定制的内容,那么您可能需要实现一个自定义过滤器和将其添加到Spring安全筛选链中来提取凭据并对其进行处理。

您的身份验证机制是否适合,也取决于它的实际组成。通常,您的用户将有分配的角色,这些角色在身份验证时加载,通常是从某种数据库中加载的。hasRole表达式只检查当前用户是否具有指定的角色。通常,您只需要创建一个UserDetailsService,它以标准格式加载用户信息,该格式很容易插入到框架中。这一问题在其他地方得到了详细的讨论。如果您真的需要更多定制的这篇博客文章,那么GAE集成包括您如何与更复杂的系统集成的详细信息。

如果使用不创建或使用会话,Security将是create-session='stateless'

实际上,您不需要在URL级别和处理相同URL的控制器上都包含相同的安全属性。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11985709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档