加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 没有表单登录的Spring安全性

发布时间:2020-12-15 01:42:19 所属栏目:大数据 来源:网络整理
导读:我在我的应用程序Spring控制器中实现了Spring Security Expression: @Controller@RequestMapping("init")public class InitController { @PreAuthorize("hasRole('ROLE_ADMIN')") @RequestMapping(value = "/",method = RequestMethod.GET) public @Respons

我在我的应用程序Spring控制器中实现了Spring Security Expression:

@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";
    }
}

使用此安全配置:

当访问此资源时,将显示默认的Spring登录表单(http:// localhost:8888 / spring_security_login)但是我不希望这种情况发生,我只想将凭据插入请求标头中“x-authorization-key”或适用于该场景的任何内容.

这有什么可能的解决方案?

>让x-authorization-key在请求中是一件好事
>如果是这样,它如何适应Spring安全机制,就是它如何适应“hasRole”表达式
>重要的是我的Web服务是无状态的,并且每个请求都经过身份验证
>最后,如何处理Spring安全性而无需处理Spring登录表单

最佳答案
您应该阅读what auto-config does上的说明,然后将其删除以禁用表单登录.如果您专门配置要使用的内容,则配置将更加清晰.

从您的问题中不清楚您希望将哪些内容包含在x-authorization-key标头中.如果您只是使用客户端ID和共享密钥进行身份验证,那么您也可以使用基本身份验证,因为它已经开箱即用,您只需添加< http-basic />到你的配置.如果您有更多自定义的内容,那么您可能必须实现自定义过滤器和add it to the Spring Security filter chain以提取凭据并处理它们.

您的身份验证机制如何适合也取决于它实际包含的内容.通常,您的用户将分配在进行身份验证时加载的角色,通常来自某种类型的数据库. hasRole表达式只检查当前用户是否具有指定的角色.通常,您只需要创建一个UserDetailsS??ervice,它以标准格式加载您的用户信息,该格式很容易插入到框架中.这在其他地方详细介绍.如果你真的需要更多定制的东西this blog article GAE集成包括你如何与更复杂的系统集成的细节.

如果您使用create-session =’stateless’,Spring Security将在not create or use a session.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读