Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
如何使用spring安全性实现两步登录?_Spring_Session_Spring Mvc_Login_Spring Security - Fatal编程技术网

如何使用spring安全性实现两步登录?

如何使用spring安全性实现两步登录?,spring,session,spring-mvc,login,spring-security,Spring,Session,Spring Mvc,Login,Spring Security,我有一个SpringWeb应用程序,它的第一页显示一个登录对话框。登录页面中提供的唯一输入是用户名和密码。我希望用户能够输入他/她的用户名和密码,然后单击a按钮,检查用户是否在ldap目录中可用。然后,我希望在同一页面中显示另一个输入(下拉列表),让用户选择要转到的页面。 问题是,据我所知,一旦spring security对用户进行了身份验证,页面必须重新加载,这样会话cookie就会存储在用户的浏览器中,重新加载时会与应用程序存储中的cookie进行检查,这样用户就被称为已登录 重新加载是我

我有一个SpringWeb应用程序,它的第一页显示一个登录对话框。登录页面中提供的唯一输入是用户名和密码。我希望用户能够输入他/她的用户名和密码,然后单击a按钮,检查用户是否在ldap目录中可用。然后,我希望在同一页面中显示另一个输入(下拉列表),让用户选择要转到的页面。 问题是,据我所知,一旦spring security对用户进行了身份验证,页面必须重新加载,这样会话cookie就会存储在用户的浏览器中,重新加载时会与应用程序存储中的cookie进行检查,这样用户就被称为已登录

重新加载是我的问题。我想检查用户凭据,如果他有足够的权限,那么我想返回一个页面列表,他可以选择登陆


伙计们,请不要让我在这里发布代码。如果你知道我在说什么,那么你就不需要代码了。告诉我该怎么办

使用AJAX对用户进行身份验证,如果用户通过身份验证,服务器将返回相应的HTTP状态,并且可能是您需要在下拉列表中显示的页面列表。这实际上是您的选择,您可以选择如何获取需要向用户显示的页面列表。根据服务器返回的HTTP状态代码,您可以决定是否向用户显示页面列表,这样您就不会重新加载页面。

您的答案是有效的,但如果不重新加载页面,您就不会有包含会话id的会话cookie。如果没有会话id,用户无法访问应用程序的其他页面。如何在spring security filter链中添加自定义筛选器,您可以在其中手动处理此类经过身份验证的用户并允许他们查看请求的页面,然后将在安全上下文中设置身份验证,并在设置身份验证时绕过此筛选器。有点脏,但应该可以。每个用户的目标页面选择是不同的,还是整个应用程序的目标页面选择是相同的?如果是前者,是否真的需要这样做?目标页面是否真的如此敏感以至于必须通过登录进行保护?例如,银行和经纪网站具有类似的功能,但它们允许用户选择目标页面以及用户名和密码。当然,所选页面上显示的内容对于每个用户都是不同的,因此不会丢失机密性。另一个选择是在成功登录时打开一个仪表板页面,用户可以从中选择目标页面。用户实际上是多个项目的成员。当我知道用户是有效的并且可以登录时,我想向他显示他可以看到的可用项目列表,并且他一次只能看到一个项目。在我们的一个应用程序中,我们在有两个起始页的情况下执行完全相同的操作。如果用户未分配到任何项目,则用户配置文件页面是登录后的起始页面。如果项目仪表板页面已分配给一个或多个项目,则它们将作为起始页面。我们允许用户选择一个项目作为默认项目,然后他们可以根据需要从下拉列表更改为其他项目。到目前为止,我们还没有收到任何用户对该计划的负面反馈。如果用户只被分配到一个项目,这是默认的任何方式。这也是我们正在做的。我们只是想通过在第一个页面上同时进行登录和项目选择来简化它。