我在管理页面实施注销功能时遇到了问题。
我使用"/admin/"
访问我的管理页面并注销我想使用"/admin/logout"
。
当我点击按钮时,我会转到"/"
,因为注销成功。当我回到"/admin"
时,我发现我仍然登录。
我的春天xml是:
<sec:http auto-config="true">
<sec:session-management session-fixation-protection="newSession"/>
<sec:intercept-url pattern="/admin/**" access="ROLE_LEVEL_0" />
<sec:http-basic />
<sec:logout delete-cookies="JSESSIONID" logout-success-url="/" logout-url="/admin/logout"/>
</sec:http>
<sec:authentication-manager alias="authenticationManager" erase-credentials="true">
<sec:authentication-provider user-service-ref="userDetailsService">
<sec:password-encoder hash="md5"/>
</sec:authentication-provider>
</sec:authentication-manager>
<bean id="userDetailsService" class="com.adminsecurity.acegi.userdetails.jdbc.JdbcUserDetailsManager">
<constructor-arg index="0" ref="dataSource"/>
<property name="changePasswordSql" value="update users set password = ? where username = ?"/>
</bean>
我的JSP是这样的:
<c:url var="logoutUrl" value="/admin/logout"/>
<form action="${logoutUrl}"
method="get">
<input type="submit"
value="Log out" />
</form>
答案 0 :(得分:0)
解决此问题的唯一方法是不使用<sec:http-basic />
并选择使用表单登录选项。
否则,浏览器将在每个请求中发送凭据,您将无法注销。有几种解决方法,但没有一种可用于每个浏览器。