当前位置: 首页 > 知识库问答 >
问题:

以编程方式登录用户SPring MVC

路雅懿
2023-03-14

我正在创建一个使用Spring security进行身份验证的Spring MVC web应用程序。

谢谢!

共有1个答案

房唯
2023-03-14

您可以执行类似的操作,方法是从数据库中检索用户,进行所需的检查,然后使用UsernamePasswordAuthenticationToken在当前会话中创建一个新的主体。

方法返回的主体用于同一请求的后续使用,因为主体在下一个请求之前无法通过正常方式检索。

public Principal doAutoLogin(String username, String password, HttpServletRequest hreq, HttpServletResponse hres, boolean rememberMe) {
        User user = getUserFromDatabase(username);
        if(user != null && passwordsMatch(password, user.getPassword())) {
            try {
                UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);
                token.setDetails(new WebAuthenticationDetails(hreq));
                if(LOG.isDebugEnabled())
                    LOG.debug("Logging in with "+ token.getPrincipal());
                SecurityContextHolder.getContext().setAuthentication(token);

                if(rememberMe) {
                    rememberMeServices.onLoginSuccess(hreq, hres, token);
                }
                return token;
            } catch (Exception e) {
                SecurityContextHolder.getContext().setAuthentication(null);
                LOG.error("Failure in autoLogin", e);
                return null;
            }
        }
        else {
            throw new IllegalArgumentException("The specified credentials can't be found");
        }
    }
 类似资料:
  • 问题内容: 相反:如何使用Spring Security手动注销用户? 在我的应用程序中,我 注册了一个新用户屏幕 ,该 屏幕 发布到一个控制器中,该控制器在db中创建一个新用户(并进行了一些明显的检查)。然后我希望这个新用户自动登录…我有点想要某种东西像这样 : 编辑 好吧,我几乎已经基于如何使用Spring Security3.1以编程方式登录用户的答案实现了 但是,部署后,jsp无法访问my

  • 问题内容: 我想在注册过程结束后立即登录用户,而无需通过登录表单。 这可能吗 ?我已经找到了的解决方案,但是我没有在我实际从事的项目中使用它。 这是我的security.yml,我正在使用两个防火墙。纯文本编码器仅用于测试。 问题答案: 是的,您可以通过类似于以下内容的方式执行此操作: 当您在上下文中设置令牌时,最后不会自动触发事件,而通常在使用登录表单或类似方法时触发。因此,将其包含在此处的原因

  • 我希望我的应用程序允许拥有Facebook,Google,Amazon等帐户的用户能够登录到我的应用程序。这通过AWS Cognito运行良好。 但是,如果用户没有任何登录,应用程序是否可以通过编程方式创建用户登录? > 我不需要实现自己的身份验证机制,也不用担心密码是如何存储的。 根据我的研究,我认为现有的身份验证提供商甚至其他服务(如OpenID)都无法做到这一点。 如果我不想实现自己的登录存

  • 问题内容: 我正在尝试编写一个可以自动登录Facebook的Java程序。 到目前为止,我已经获得了下面的代码,可以将主页html页面下载到String中,但是不知道如何发送电子邮件和密码来登录Facebook?Java程序还需要处理返回的Cookie才能保持登录状态吗? } 更新: 我已经使用htmlUnit尝试了以下代码,但是出现以下异常: 有人知道为什么吗? 问题答案: 您应该看一下HTML

  • 无账号对接,在使用需要用户登录得功能时,用户将使用变现产品提供的第三方登录:QQ登录、微信登录

  • 无账号对接,在使用需要用户登录得功能时,用户将使用变现产品提供的第三方登录:QQ登录、微信登录。