Spring 安全性:允许在用户单击按钮后进行匿名身份验证
Spring Security: Allow anonymous authentication after user clicks a button
我尝试在我的登录页面上添加一个“以访客身份登录”按钮。
我希望在用户按下此按钮后启用匿名身份验证。
因此,如果用户导航到受 WebSecurityConfigurerAdapter 保护的站点,则应显示登录页面,并且用户必须单击“以访客身份登录”按钮才能以匿名身份访问受保护站点用户。
但是根据 spring 文档,未经身份验证的用户和匿名用户之间并没有真正的区别。有没有办法用匿名用户的概念来归档这种行为?
你想多了。让它变得简单。
您可以使用 Authentication 对象提供 AnonymousAuthenticationToken
但要小心,即使您已经通过了身份验证系统,您的主体也将为 null,因为 SecurityContextHolder
无法提供身份。
您可以在 JUnit5 测试中使用 @WithAnonymousUser 来检查您是否有预期的结果。
如果它不起作用(我对此表示怀疑),您可以自由创建一个新角色,并更新您的身份验证逻辑以提供用户访问这些新角色,与您的网络应用程序中的其他角色完全不同为您的用户和管理员,并仅使用这些新角色更新 public 网页的资源访问权限。
我尝试在我的登录页面上添加一个“以访客身份登录”按钮。 我希望在用户按下此按钮后启用匿名身份验证。
因此,如果用户导航到受 WebSecurityConfigurerAdapter 保护的站点,则应显示登录页面,并且用户必须单击“以访客身份登录”按钮才能以匿名身份访问受保护站点用户。
但是根据 spring 文档,未经身份验证的用户和匿名用户之间并没有真正的区别。有没有办法用匿名用户的概念来归档这种行为?
你想多了。让它变得简单。
您可以使用 Authentication 对象提供 AnonymousAuthenticationToken
但要小心,即使您已经通过了身份验证系统,您的主体也将为 null,因为 SecurityContextHolder
无法提供身份。
您可以在 JUnit5 测试中使用 @WithAnonymousUser 来检查您是否有预期的结果。
如果它不起作用(我对此表示怀疑),您可以自由创建一个新角色,并更新您的身份验证逻辑以提供用户访问这些新角色,与您的网络应用程序中的其他角色完全不同为您的用户和管理员,并仅使用这些新角色更新 public 网页的资源访问权限。