Java 在spring security中用户注销时从会话中删除用户登录凭据
我不熟悉Spring和Spring Security。我一直在看教程 不允许用户在未登录的情况下点击添加员工页面。因此,如果您点击添加员工页面,您将被引导到登录页面,当登录成功时,您将被自动引导到添加员工页面 但一旦用户登录,即使在用户注销后,也可以访问addemployee链接。即使在服务器重新启动后也可以访问它,我必须关闭浏览器窗口以销毁登录凭据 当我将注销url保留为我不想使用的“j_spring_security_logout”时,它可以正常工作。我想使用自定义域名和URL,可以吗 这就是我的spring-security.xml的外观Java 在spring security中用户注销时从会话中删除用户登录凭据,java,spring,spring-mvc,spring-security,Java,Spring,Spring Mvc,Spring Security,我不熟悉Spring和Spring Security。我一直在看教程 不允许用户在未登录的情况下点击添加员工页面。因此,如果您点击添加员工页面,您将被引导到登录页面,当登录成功时,您将被自动引导到添加员工页面 但一旦用户登录,即使在用户注销后,也可以访问addemployee链接。即使在服务器重新启动后也可以访问它,我必须关闭浏览器窗口以销毁登录凭据 当我将注销url保留为我不想使用的“j_spring_security_logout”时,它可以正常工作。我想使用自定义域名和URL,可以吗 这
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/login" access="permitAll" />
<intercept-url pattern="/logout" access="permitAll" />
<intercept-url pattern="/accessdenied" access="permitAll" />
<intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
<form-login login-page="/login" default-target-url="/list"
authentication-failure-url="/accessdenied" />
<logout logout-success-url="/logout" invalidate-session="true"
delete-cookies="true" />
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider>
<user-service>
<user name="hasif" password="password" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
}首先
当Spring提供了这么好的安全功能时,为什么要手动执行
毫无疑问,你可以自己处理。为此,当用户单击“注销”按钮或链接时,您必须使当前会话无效。有一种可用的方法可以解决您的问题。首先
当Spring提供了这么好的安全功能时,您为什么要手动执行
毫无疑问,你可以自己处理。为此,当用户单击“注销”按钮或链接时,您必须使当前会话无效。有可用的方法HttpSession#invalidate()
可以解决您的问题。您的配置错误,您必须指定注销url
属性,而不是注销成功url
。后者是成功注销后发送到的url
<logout logout-url="/logout" invalidate-session="true" delete-cookies="true" />
如果要更改用于指定用户名/密码的参数名称,请在表单登录
元素上分别添加用户名参数
和密码参数
<form-login login-page="/login" default-target-url="/list" authentication-failure-url="/accessdenied" username-parameter="my-username-param" password-parameter="my-password-param"/>
有关名称空间的解释,我建议您阅读。您的配置错误,您必须指定注销url
属性,而不是注销成功url
。后者是成功注销后发送到的url
<logout logout-url="/logout" invalidate-session="true" delete-cookies="true" />
如果要更改用于指定用户名/密码的参数名称,请在表单登录
元素上分别添加用户名参数
和密码参数
<form-login login-page="/login" default-target-url="/list" authentication-failure-url="/accessdenied" username-parameter="my-username-param" password-parameter="my-password-param"/>
对于名称空间的解释,我建议阅读。我确实尝试从控制器中使会话无效,但没有效果。我没有改变任何安全功能,我只想使用自定义url和字段名。我相信应该有办法做到这一点。我只是想知道。@Hasif你还记得我在其他地方配置过吗?@VimalBera当我将注销url保持为“j_spring_security_logout”时,它会工作,但我想改用“logout”。你确定你的注销控制器被调用了吗?我尝试过从控制器中使会话无效,但没有效果。我没有改变任何安全功能,我只想使用自定义url和字段名。我相信应该有办法做到这一点。我只是想知道。@Hasif你还记得我在其他地方配置过吗?@VimalBera当我将注销url保持为“j_spring_security_logout”时,它会工作,但我想使用“logout”相反。是否确实调用了注销控制器?在配置中,您只指定了注销成功url
,而没有指定注销url
logout success url
是您在成功注销后发送到的url。@M.Deinum就是它。我忘了输入注销url。但是,有没有办法将用户名和密码的文本框名称从默认名称(如j_用户名和j_密码)更改为其他名称?如何在表单登录
标签上指定用户名参数
和密码参数
。。。这些都在文档中解释过了!在您的配置中,您只指定了注销成功url
,而没有指定注销url
logout success url
是您在成功注销后发送到的url。@M.Deinum就是它。我忘了输入注销url。但是,有没有办法将用户名和密码的文本框名称从默认名称(如j_用户名和j_密码)更改为其他名称?如何在表单登录
标签上指定用户名参数
和密码参数
。。。这些都在文档中解释过了!