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

将参数传递给我的login.jsp

彭开畅
2023-03-14

我有一个简单的 Servlet 应用程序的安全部分,我需要将参数传递给我的应用程序的安全部分。

流量:

  1. 第三方需要使用我的登录机制(简单的安全servlet)
  2. 用户尝试转到: mycompany.com/loginApp/login?pref=1
  3. “/login”url是安全的,因此应用程序服务器告诉浏览器重定向到我的登录名.jsp,但此时URL更新为:mycompany.com/loginApp/login/login.jsp(请注意“?pref=1”已消失)

我web.xml的安全性如下:

    <security-constraint>
    <web-resource-collection>
        <web-resource-name>Secured</web-resource-name>
        <description></description>
        <url-pattern>/home</url-pattern>
        <url-pattern>/login</url-pattern>
        <url-pattern>/jsp/apps/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>

    <auth-constraint>
        <description>protectedlinks</description>
        <role-name>protected</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>mycompany.com</realm-name>
    <form-login-config>
        <form-login-page>/login.jsp</form-login-page>
        <form-error-page>/error.jsp</form-error-page>
    </form-login-config>
</login-config>

<security-role>
    <description>
    Protected portion of site</description>
    <role-name>protected</role-name>
</security-role>

纵观整个网络,AppServer似乎确实会重定向到登录名。尝试访问安全内容时使用jsp:http://docs.oracle.com/javaee/5/tutorial/doc/bncbe.html#bncbq

我希望发生的是“pref=1”以某种方式保存到login.jsp,然后提交给身份验证servlet(验证数据库中的用户)。

对此有什么建议吗?

更新 隐藏参数将不起作用。浏览器已经完成了一个完整的重定向,它已经清除了所有请求(包括URL中的“pref=1”参数)。因此,我不能将其作为隐藏参数包含在我的登录.jsp的形式中。

更新2“pref”变量是动态的,所以它不会总是为1。

谢谢,肖恩

共有2个答案

裴俊雅
2023-03-14

我不确定这是否可能以您想要的方式完成。我会做的是一点点黑客攻击如下:

设置一个接受初始请求的servlet。这个servlet将把传递的参数(pref)存储在会话变量中。然后这个servlet将重定向到受保护的资源。应用程序服务器将自动将用户引导到登录页面。一旦在会话中有了pref参数,你就可以随心所欲地使用它。

我希望这有帮助

韩梓
2023-03-14

添加<代码>

但是它将成为一个POST参数,因此在查询字符串中并不完全可用,但它会出现在请求中。

上面介绍了一个静态参数。通过登录传递变量。jsp上的自动重定向需要使用过滤器。SO在这里介绍了这一点:如何通过Spring Security登录页面传递附加参数

 类似资料:
  • 问题内容: 我正在使用Go内置的http服务器,并拍拍来响应一些URL: 我需要向该处理函数传递一个额外的参数-一个接口。 如何向处理程序函数发送额外的参数? 问题答案: 通过使用闭包,您应该能够做您想做的事情。 更改为以下内容(未测试): 然后对

  • 我在解一个有很多常数的非线性方程 我创建了一个用于解决以下问题的函数: 然后我想做: 但是正在解包并向函数传递太多参数,因此我得到: TypeError:terminalV()正好接受2个参数(给定6个) 那么,我的问题是,我是否可以通过某种方式将元组传递给调用的函数?

  • 问题内容: 在我的RCP应用程序中,左侧有一个用于导航的视图,右侧有一个用于视图的文件夹。透视图看起来像这样: 我想根据用户在导航树中选择的内容打开不同的视图。认为这并不难。我的导航树视图: 这似乎很好。仅有一个小问题:我需要以某种方式将对象(例如,selectedItem)传递给我的视图,以使用户与其内容进行交互。我怎么做? 我看到了一些示例,其中一些同事编写了自己的视图,并将其放置在右侧。然后

  • 问题内容: 我正在尝试为我的程序制作验证类。我已经建立了与MySQL数据库的连接,并且已经在表中插入了行。该表由,和领域。现在,我想通过构造函数的参数在数据库中选择特定的行。 但这似乎没有用。 问题答案: 您应该使用方法设置。这既可以确保语句的格式正确,又可以防止: Java教程中有一个很好的教程,说明如何正确使用。

  • 问题内容: 我正在寻找一种将变量或字符串或任何东西传递给JButton的匿名actionlistener(或显式actionlistener)的方法。这是我所拥有的: 现在,我只是声明是一个全局变量,但是我讨厌这种工作方式。有更好的选择吗? 问题答案: 创建一个实现该接口的类。 提供具有参数的构造函数。 问题?

  • 我有一些JMH基准测试,我正在尝试分析。我想启用 GC 日志记录以查看生成了多少垃圾,但我不知道如何传递 JVM 参数。我知道JMH在分叉的JVM中运行基准测试,所以对我来说如何做到这一点并不是很明显。我正在使用断续器。