Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring security,为什么我总是自动登录?_Java_Spring_Angular - Fatal编程技术网

Java Spring security,为什么我总是自动登录?

Java Spring security,为什么我总是自动登录?,java,spring,angular,Java,Spring,Angular,我按照本教程结合了角度和弹簧安全性: 我可以在这里复制/粘贴代码,但基本上它有一个app.component.html,根据我们是否登录显示一个或另一个路由器出口 如果您已登录,则显示的组件将显示从localhost:8080/resource加载的资源,但如果您未登录,则显示登录表单组件。一切正常。我转到localhost:8080/home,它显示了登录表单。登录后,它将显示资源,注销时,它将再次显示登录表单 我的问题是,有了一个清理了所有cookie的新浏览器,我仍然可以访问localh

我按照本教程结合了角度和弹簧安全性:

我可以在这里复制/粘贴代码,但基本上它有一个app.component.html,根据我们是否登录显示一个或另一个路由器出口

如果您已登录,则显示的组件将显示从localhost:8080/resource加载的资源,但如果您未登录,则显示登录表单组件。一切正常。我转到localhost:8080/home,它显示了登录表单。登录后,它将显示资源,注销时,它将再次显示登录表单

我的问题是,有了一个清理了所有cookie的新浏览器,我仍然可以访问localhost:8080/resource。更糟糕的是,在此之后,如果我稍后转到localhost:8080/home,它会显示带有/resource的组件,就像我已经登录一样。这就像完全跳过了身份验证一样,即使WebSecurityConfigureAdapter的配置也会阻止在未经身份验证的情况下访问任何资源:

  http.httpBasic()
  .and()
  .authorizeRequests()
  .antMatchers("/index.html", "/", "/home", "/login").permitAll()
  .anyRequest().authenticated()
  .and()
  .csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
所以我的问题是,这里失败的是什么?为什么我可以访问localhost:8080/resource,即使我没有经过身份验证

编辑,按照评论中建议的匿名测试:

对于隐姓埋名者,同样的事情也会发生。只是第一次我无法访问。之后,无论我注销或重新启动浏览器多少次,我仍然可以访问它。只有在清除整个历史记录+缓存+cookies后,我才能失去对/resource的访问权限。根据教程:

如果用户经过身份验证,那么我们将显示一个“注销”链接并将其挂起 指向AppComponent中的logout()函数。记住,它发送一个HTTP 发布到“/注销”,我们现在需要在服务器上实现它。这 很简单,因为它已经在Spring之前为我们添加了 安全性(即,我们不需要为这个简单的用例做任何事情)


读到这篇文章,我希望注销后,我看到的是从浏览器发送的,清除此会话的任何身份验证。。。这是否正确?

您是否尝试过匿名模式?基本身份验证不依赖于cookie,因此请确保浏览器未缓存凭据。如果浏览器未使用cookie。。。那么,它是否每次都发送用户和密码来验证任何请求?是的,基本身份验证就是这样工作的。浏览器将缓存它直到会话结束(即关闭浏览器)@MortenHaraldsen我们如何避免它。我用的是仍然面临这个问题的邮递员。