当前位置: 首页 > 面试题库 >

如何在Spring Security登录页面中传递附加参数

田骁
2023-03-14
问题内容

我正在尝试从Spring安全性登录页面将数据库名称设置为请求输入参数。目前,我只获得使用spring security检索到的用户名SecurityContextHolder.getContext().getAuthentication()

如何访问在登录页面上设置的其他字段?


问题答案:

详细阐述@Vacuum的评论

这是一种简单的方法(未经测试,但我相信这会起作用)

1)创建一个新类ExUsernamePasswordAuthenticationFilter,它将扩展默认过滤器并获取其他参数并将其存储在会话中。它看起来像这样:

    public class ExUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter {

    @Override
    public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException {
        final String dbValue = request.getParameter("dbParam");
        request.getSession().setAttribute("dbValue", dbValue);

        return super.attemptAuthentication(request, response); 
    } 
}

2)在你的UserDetailsService实现中,修改你的实现:

UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException;

获取第1)步中的过滤器提供的会话变量。

3)在你的<http />安全设置中,使用你的自定义过滤器覆盖默认过滤器

<custom-filter ref="beanForYourCustomFilterFromStep1" position="FORM_LOGIN_FILTER"/>


 类似资料:
  • 我正在尝试将数据库名称设置为Spring Security登录页面的请求输入参数。目前,我只获得使用Spring安全安全检索的用户名。 如何访问登录页面上设置的附加字段?

  • 我正在做一个项目,其中为登录身份验证实现了Spring Security。现在,我们希望当用户登录时,它连接到哪个数据库取决于一个参数,即我在登录过程中传递的参数,并希望在页面上访问该参数home.jsp我的代码为: 1)登录页面url /登录 2)Spring表单登录为 3) 访问决策管理器类 网址为家.jsp /首页 有人能帮我吗?我如何将一个额外的参数从登录页面传递到主页。如果我在登录前进行

  • 我希望我的这个登录页面加载两次,即第一次用户输入username和password,然后从servlet获得响应,然后它将被重定向到带有“messages”的登录jsp页面。 我有两个按钮用于登录和注销。这个脚本可以像我试过的那样通过使用count变量加载两次吗?任何其他方法也将是首选。 附注:我试过使用和但它们不起作用。 login.jsp:-

  • 问题内容: 我有一个Maven项目,运行命令 mvn后,安装 所有项目以及模块编译并成功复制到本地存储库。但是现在我想在tomcat6中运行生成的Web应用程序。客户端为tomcat提供了一些参数,例如一旦项目启动,这些参数将在内部使用。但是我不知道如何在tomcat6中设置这些附加参数。下面是我的开发环境 操作系统= Windows Tomcat = Tomcat 6.0.27 请帮我? 问题答

  • 我在stackoverflow周围搜索了一下,但没有找到一个合适的解决方案来以编程方式更改jqm页面并传递一个(get)参数。我是jqm的新手,所以可能我在使用change ePage()函数传递数据时出错了。 使用jquery mobile 1.1.1和jquery 1.8.0 我有一个列表,希望所有项目都指向相同的#配置文件页面。在该页面上,我想用ajax/json加载适当的数据。 第一个链接

  • 在普通的web开发中,参数传递有这么几种形式: url: /another_page?id=3 表单: <form>...</form> 在vuejs中,不会产生表单的提交(这会引起页面的整体刷新). 所以有两种: url . 同传统语言. vuejs 内部的机制.(无法在url 中体现,可以认为是由js代码隐式实现的) 我们用一个实际的例子说明. 我们之前实现了 "博客列表页",接下来我们要实现