我使用的是Spring 4.0.5.RELEASE和Spring Security 3.2.4.
我正在尝试使用java配置创建一个简单的示例应用程序(基于Spring示例).应用程序启动并且身份验证正常运行,也就是说,在访问受保护的url / settings/profile时,我被重定向到登录表单
但是没有/ logout url生成?如果我点击localhost:8080/logout我得到404.
我在之前的项目中使用了类似的代码,所以可能与版本有关?
继承我的安全配置
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
auth.inMemoryAuthentication().withUser("admin").password("password").roles("ADMIN");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/settings/**").hasRole("ROLE_ADMIN")
.and()
.formLogin()
.and()
.logout()
.deleteCookies("remove")
.invalidateHttpSession(true)
.logoutUrl("/logout")
.logoutSuccessUrl("/logout-success")
.permitAll();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的WebAppInitializer来引导应用程序
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { SecurityConfig.class , MvcConfig.class };
}
@Override
protected Class<?>[] …Run Code Online (Sandbox Code Playgroud) java configuration spring spring-security spring-java-config
我在Spring框架中登出时遇到了问题.
首先,当我希望j_spring_security_logout为我处理它时,我得到404找不到j_spring_security_logout:sample-security.xml:
<http>
<intercept-url pattern="/messageList.htm*" access="ROLE_USER,ROLE_GUEST" />
<intercept-url pattern="/messagePost.htm*" access="ROLE_USER" />
<intercept-url pattern="/messageDelete.htm*" access="ROLE_ADMIN" />
<form-login login-page="/login.jsp" default-target-url="/messageList.htm"
authentication-failure-url="/login.jsp?error=true" />
<logout/>
</http>
Run Code Online (Sandbox Code Playgroud)
示例url链接到JSP页面中的注销:
<a href="<c:url value="/j_spring_security_logout" />">Logout</a>
Run Code Online (Sandbox Code Playgroud)
当我尝试使用自定义JSP页面,即我使用登录表单为此目的,然后我得到更好的结果,至少它到达登录页面,但另一个问题是,你不能被注销,因为你可以直接键入url应该保持警惕,无论如何都要过去.
从以前的列表略有修改:
<http>
<intercept-url pattern="/messageList.htm*" access="ROLE_USER,ROLE_GUEST" />
<intercept-url pattern="/messagePost.htm*" access="ROLE_USER" />
<intercept-url pattern="/messageDelete.htm*" access="ROLE_ADMIN" />
<form-login login-page="/login.jsp" default-target-url="/messageList.htm"
authentication-failure-url="/login.jsp?error=true" />
<logout logout-success-url="/login.jsp" />
</http>
Run Code Online (Sandbox Code Playgroud)
<a href="<c:url value="/login.jsp" />">Logout</a>
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助
我一直在学习spring和spring-security,并且在spring安全上下文中遇到了标签的auto-config ="true"属性.我被介绍给j_spring_security_logout作为提交以在jsp中注销功能的url.
在jsp中使用如下:
<a href="../j_spring_security_logout">logout buddy</a></p>
<a href="../j_spring_security_login">login</a></p>
Run Code Online (Sandbox Code Playgroud)
Spring提供的这个j_spring_security_logout(魔法)究竟是什么?我听说它被称为处理程序.但我不知道这意味着什么.
先感谢您.