相关疑难解决方法(0)

Spring Security Java Config不生成logout url

我使用的是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

11
推荐指数
1
解决办法
2万
查看次数

Spring安全注销问题

我在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-security

9
推荐指数
3
解决办法
3万
查看次数

在Spring-Security中,j_spring_security_logout究竟是什么?我听说它被称为"处理程序",但我不确定这意味着什么

我一直在学习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(魔法)究竟是什么?我听说它被称为处理程序.但我不知道这意味着什么.

先感谢您.

java spring servlets spring-mvc spring-security

3
推荐指数
1
解决办法
3870
查看次数