dig*_*nie 6 java spring spring-security
我目前有一个看起来像这样的设置:
弹簧security.xml文件:
<http auto-config="true">
<intercept-url pattern="/login*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/login"
default-target-url="/main.html"
authentication-failure-url="/failedLogin"/>
<logout logout-url="/logout.html" logout-success-url="/login" />
</http>
<authentication-manager>
<authentication-provider>
<user-service>
<user name="foo" password="bar" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
Run Code Online (Sandbox Code Playgroud)
web.xml中:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
这一切似乎都按预期工作,但是,在特殊情况下,如果用户传入特殊令牌,我希望绕过登录页面.因此,目前,如果用户访问诸如此类的URL /dog,他们将看到登录页面,如果他们传递了凭据,foo/bar那么他们将登录并查看对应的页面/dog.
我希望能够使用诸如/dog?token=abcd绕过登录屏幕并直接将其带到相应页面的URL /dog.如果他们提供无效令牌,那么他们只会看到拒绝访问的页面.
在Spring Security中,您要介绍的方案在参考手册" 预身份验证方案"一章中进行了介绍.
基本上你必须:
AbstractPreAuthenticatedProcessingFilter或选择其中一个实现来创建自定义过滤器,<custom-filter position="PRE_AUTH_FILTER" ref="yourPreAuthFilter" />,AuthenticationUserDetailsService的,PreAuthenticatedAuthenticationProvider(with <property name="yourPreAuthenticatedUserDetailsService">)中注册服务.编辑:在这个答案中, OP展示了他实现自定义的方式PRE_AUTH_FILTER.
| 归档时间: |
|
| 查看次数: |
9906 次 |
| 最近记录: |