2010-05-05 84 views
5

Tôi đang sử dụng bảo mật mùa xuân 3.0.2. Tất cả các trang ứng dụng được bảo mật, vì vậy bạn phải được xác thực để xem chúng.phiên bị mất sau khi đăng nhập thành công?

Tôi đang sử dụng giao thức https.

Tôi gặp sự cố lạ: sau khi đăng nhập thành công và truy cập trang được yêu cầu, khi tôi cố gắng mở bất kỳ liên kết nào đến các trang khác trong ứng dụng, phiên bị vô hiệu hoặc bị mất và người dùng sẽ ẩn danh và chuyển hướng đến trang đăng nhập . Tôi nhận được thông báo gỡ lỗi này:

No HttpSession currently exists 
No SecurityContext was available from the HttpSession: null. A new one will be created. 

Sau khi xem lại mã nhiều lần, không có nội dung nào trong mã làm mất hiệu lực phiên. Bất kỳ ý tưởng? Tại sao một cái gì đó như thế này có thể xảy ra?

Trả lời

1

app-an ninh, xml:

<beans:beans xmlns="http://www.springframework.org/schema/security" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
         http://www.springframework.org/schema/security 
         http://www.springframework.org/schema/security/spring-security-3.0.xsd"> 

    <global-method-security pre-post-annotations="enabled"> 

    </global-method-security> 
    <http use-expressions="true" disable-url-rewriting="true"> 
     <remember-me token-repository-ref="tokenRepository" 
     token-validity-seconds="1209600"/> 
     <access-denied-handler error-page="/error.jsp"/> 

     <intercept-url pattern="/" access="permitAll" /> 
     <intercept-url pattern="/**/images/**" filters="none" /> 
     <intercept-url pattern="/**/files/**" filters="none" /> 
     <intercept-url pattern="/images/**" filters="none" /> 
     <intercept-url pattern="/scripts/**" filters="none" /> 
     <intercept-url pattern="/styles/**" filters="none" /> 
     <intercept-url pattern="/p/login" filters="none" /> 
     <intercept-url pattern="/p/register" filters="none" /> 
     <intercept-url pattern="/p/forgotPassword" filters="none" /> 
     <intercept-url pattern="/p/changePassword" filters="none" /> 
     <intercept-url pattern="/p/**" access="isAuthenticated()" /> 
     <custom-filter position="LAST" ref="rememberMeFilter"/>  
     <form-login     
      login-processing-url="/j_spring_security_check"   
      login-page="/p/login" 
      authentication-failure-url="/p/login?login_error=1"  
      authentication-success-handler-ref="myAuthenticationHandler"    
     /> 

     <logout /> 
    </http> 

    <beans:bean id="myAuthenticationHandler" class="com.myAuthenticationHandler" /> 
    <beans:bean id="rememberMeFilter" class="com.rememberMeFilter" /> 

    <beans:bean id="tokenRepository" class="org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl"> 
    <beans:property name="dataSource" ref="dataSource"/> 
    </beans:bean> 


    <authentication-manager alias="authenticationManager"> 
    <authentication-provider> 

      <password-encoder hash="md5"/>   
      <jdbc-user-service data-source-ref="dataSource" 
      users-by-username-query="SELECT u.username,u.password,u.enabled 
           FROM Users u where u.username=lower(?)"  
     authorities-by-username-query="SELECT a.username,a.authority  
           FROM Users u, authorities a 
           WHERE u.username=a.username 
           and u.username=lower(?) and enabled=1"/> 

     </authentication-provider> 
    </authentication-manager> 

    </beans:beans> 
+0

Trong khi câu trả lời luôn được đánh giá cao, nó thực sự giúp cung cấp một số thông tin về cách mã của bạn giải quyết được vấn đề trong tầm tay. Vui lòng cung cấp một số bối cảnh xung quanh câu trả lời của bạn và xem [bài viết trợ giúp] (http://stackoverflow.com/help/how-to-answer) để biết thông tin về cách viết câu trả lời tuyệt vời. –

+0

Tôi cũng đang đối mặt với vấn đề tương tự, cách bạn giải quyết? –

2

thể là một miền cookie hoặc đường dẫn cookie vấn đề. Bạn có phải là trang đăng nhập https trên cùng một đường dẫn/miền không?

+2

Cảm ơn bạn đã trả lời câu hỏi này. Tôi đã cố đăng nhập sau khi chuyển từ Glassfish sang WildFly. Mỗi lần tôi đăng nhập thành công bằng bảo mật mùa xuân, phiên bị mất và một người dùng ẩn danh được tạo, khiến trang đăng nhập tải lại. Tôi đã xóa tất cả cookie trình duyệt cục bộ và cuối cùng có thể đăng nhập! –

+0

@ChrisRitchie Cảm ơn bạn đã bình luận. Tôi đã gặp vấn đề tương tự và việc xóa cookie trình duyệt đã khắc phục sự cố này cho tôi. –

2

Tôi gặp vấn đề tương tự. Tôi chuyển từ Jboss 7.0 sang Wildfly 8.0, trong Jboss 7.0, hành vi OK (đăng nhập thành công và chuyển hướng đến trang chỉ mục), nhưng trong Wilfly đăng nhập thành công, chuyển hướng đến trang chỉ mục nhưng sau đó phiên bị mất và chuyển hướng Spring Security để đăng nhập một lần nữa.

Tôi đã thấy cookie trong điều hướng web (chrome) và có hai cookie JSESSIONID trong cùng một tên miền (127.0.0.1) với các giá trị khác nhau. Tôi đã xóa tất cả cookie và đã làm thủ tục đăng nhập lại, và điều này là ok.

Các vấn đề liên quan