簡體   English   中英

春季安全性:如果用戶未通過身份驗證,則為http

[英]spring security: http if user not authenticate

我正在使用Spring 3.2 + primefaces 3.5 + hibernate 4.1.9安全上下文是:

 <http auto-config='false' use-expressions="true" > <intercept-url pattern="/**/login" access="permitAll" requires-channel="https"/> <intercept-url pattern="/**/registration" access="permitAll" requires-channel="https" /> <intercept-url pattern="/**/cart" access="permitAll" requires-channel="https" /> <intercept-url pattern="/**/cart/**" access="hasAnyRole('USER','ADMIN')" requires-channel="https" /> <intercept-url pattern="/pages/adm/**" access="hasRole('ADMIN')" requires-channel="https" /> <intercept-url pattern="/*/account**" access="hasAnyRole('USER','ADMIN')" requires-channel="https" /> <intercept-url pattern="/**" requires-channel="any" /> <form-login login-page="/loginRedirect" authentication-failure-handler-ref="pennyUrlAuthenticationFailureHandler" authentication-success-handler-ref="pennyAuthSuccessHandler" default-target-url="/pages/account/orders.xhtml" /> <logout logout-success-url="/" invalidate-session="true"/> </http> 

如果我轉到需要HTTPS的頁面,則在會話的其余部分中,即使用戶未通過身份驗證,它也會使用HTTPS協議。 如果我訪問https:// mystite / en / cart,HTTPS將用於所有瀏覽會話。

我不想永遠將HTTPS切換為HTTP,僅當用戶未通過身份驗證時才可以。 我可以對未經身份驗證的用戶強制使用HTTP嗎?

如果我轉到需要HTTPS的頁面,則在會話的其余部分中,即使用戶未通過身份驗證,它也會使用HTTPS協議。

這是正確的,因為

<intercept-url pattern="/**/cart/**" access="hasAnyRole('USER','ADMIN')" requires-channel="https" />

另外,由於

<intercept-url pattern="/**" requires-channel="any" />

一旦用戶請求了需要HTTPS的資源,它將堅持使用HTTPS。 如果您說了any (HTTPS和其他一樣好),為什么還要切換回去?

我可以對未經身份驗證的用戶強制使用HTTP嗎?

不,不是我所知道的。 就個人而言,我也不認為這很有道理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM