authentication - 如何在 Spring Security 5 中进行未经身份验证的授权
问题描述
我是 Spring Security 的新手。我正在尝试将 Spring Security 集成到我的 Web 应用程序中。
我们有自己的身份验证过程,无法修改。然而,一旦用户成功完成了这个过程,它就会被加载到会话中,包括角色。
我们试图实现的是利用这些信息来进行 Spring Security 的授权过程,也就是说,强制它从用户 session 中获取角色,而不是通过 authentication-provider 来获取它。
有没有办法在 Spring Security 5 中实现这一点?
解决方案
这应该有效。只需配置您的 spring 安全性,因为您将使用 http 基本身份验证。
然后在您完成自定义登录时,设置它,以便 Spring 安全性可以使用它进行授权。
Authentication authentication = new
UsernamePasswordAuthenticationToken("username", null, authoritiesOfUser);
SecurityContextHolder.getContext().setAuthentication(authentication);
HttpSession session = req.getSession(true);
session.setAttribute(SPRING_SECURITY_CONTEXT_KEY,
SecurityContextHolder.getContext());
Spring security 有一个名为 的过滤器SecurityContextPersistenceFilter
,它会自动获取您上面设置的内容,将其放入带有自己的密钥的 http 会话中,然后SecurityContextHolder.getContext()
在后续请求中重新填充。
推荐阅读
- amazon-web-services - 我在尝试使用“AWS 传输到 SFTP”服务时收到“无法加载内容错误”
- jekyll - 如何使用 Windows 命令行构建 Jekyll 项目生产
- python - MultiIndex 表的多种格式化方法
- scala - Scala:点到直线的正交投影
- java - 在 Gradle 中测试失败,但在 Maven 中工作正常
- java - 从 Arraylist 中获取恰好出现 3 次的字符串
- django - 是否有 Django 模板标签可以将百分比转换为人类可读的格式?
- ruby-on-rails - 表单关联:控制器同时将信息保存到 2 个模型时遇到问题
- angular - Angular Material 选项卡根本不渲染
- powershell - FindItems() 在第一次运行时不起作用,但在第二次运行时起作用