当前位置: 首页 > 知识库问答 >
问题:

当请求未通过Spring Security链时访问身份验证对象

谷梁玺
2023-03-14

我想实现的是一个非安全页面(例如 /index),但是当经过身份验证时,它应该可以访问身份验证对象以显示登录的用户。

根据Spring文档,身份验证对象在未通过安全过滤器链时不可用:

如果您想在请求期间使用SecurityContext内容的内容,那么它必须已经通过了安全过滤器链。否则将不会填充SecurityContextHolder,内容将为空。

但要禁用页面安全性,则禁用安全过滤器:

<http pattern="/index" security="none"/>

与filters=“none”类似,这也将完全禁用该请求路径的安全过滤器链,因此当在应用程序中处理请求时,Spring Security功能将不可用。

我也不能使用<代码>

作为Spring Security的新手,我如何构建一个可以访问SecurityContext的非安全页面?(使用带有XML配置的Spring Security 3.2.9)

共有1个答案

公西良骏
2023-03-14

您可以使用匿名身份验证过滤器,当没有用户登录时,它将创建一个匿名身份验证令牌实例并将其分配给安全上下文older.get上下文(). set身份验证()。因此,您不会得到身份验证。您可以执行一个简单的实例操作来检查用户是登录还是匿名。

<bean id="anonymousAuthFilter"
      class="org.springframework.security.web.authentication.AnonymousAuthenticationFilter">
    <property name="key" value="anonymousUser"/>
    <property name="userAttribute" value="anonymousUser,ROLE_ANONYMOUS"/>
</bean>

<http pattern="/**">
    <intercept-url pattern="/index" access="permitAll"/>
    <custom-filter ref="anonymousAuthFilter" position="ANONYMOUS_FILTER" />
</http>
 类似资料:
  • 一切都一直在工作,只是今天我开始得到一个错误消息,我甚至不能从Android工作室“同步项目与Gradle文件”。我唯一改变的是...办公室:D

  • 经过身份验证的请求可用于获取授权代码令牌,以访问系统中的所有者资源。 对授权端点发出的请求会导致用户身份验证,并在向授权端点发送请求时提供明确的凭据。 经过身份验证的请求包含以下参数 - response_type - 这是一个必需参数,用于将值设置为'code',用于请求授权代码。 如果授权请求中没有'response_ type'参数,则授权服务器返回错误响应。 由于无效或不匹配的重定向URI

  • 我只是在两个问题中输入,然后程序似乎继续没有问题。但是,我需要这些代码通过cron任务实现自动化,所以我不希望它暂停程序来问我这两个问题。是不是有什么东西我不提供给它,这样它就不会问这个了?我需要做些什么来阻止它的追问?希望有人有一些想法。多谢了。

  • 再说一遍,SSLPeerunverificed的沉闷问题,但我没有使用自签名证书。我尝试使用HTTPS连接到主机。此主机具有正确的证书,Firefox和HttpsUrlConnection都没有任何问题。然而,在尝试使用HttpClient进行连接时,我遇到了可怕的异常。 有线索吗?还是小费在哪里看得更近? 谢了!

  • 问题内容: 这是我的情况: 一个Web应用程序对许多应用程序执行某种SSO 登录的用户,而不是单击链接,该应用就会向正确的应用发布包含用户信息(名称,pwd [无用],角色)的帖子 我正在其中一个应用程序上实现SpringSecurity以从其功能中受益(会话中的权限,其类提供的方法等) 因此,我需要开发一个 自定义过滤器 -我猜想-能够从请求中检索用户信息,通过自定义 DetailsUserSe