<i id='42BP4'><tr id='42BP4'><dt id='42BP4'><q id='42BP4'><span id='42BP4'><b id='42BP4'><form id='42BP4'><ins id='42BP4'></ins><ul id='42BP4'></ul><sub id='42BP4'></sub></form><legend id='42BP4'></legend><bdo id='42BP4'><pre id='42BP4'><center id='42BP4'></center></pre></bdo></b><th id='42BP4'></th></span></q></dt></tr></i><div id='42BP4'><tfoot id='42BP4'></tfoot><dl id='42BP4'><fieldset id='42BP4'></fieldset></dl></div>
<tfoot id='42BP4'></tfoot>

    • <bdo id='42BP4'></bdo><ul id='42BP4'></ul>
  • <small id='42BP4'></small><noframes id='42BP4'>

        <legend id='42BP4'><style id='42BP4'><dir id='42BP4'><q id='42BP4'></q></dir></style></legend>

        Embedded Jetty - 以编程方式添加基于表单的身份验证

        Embedded Jetty - Programmatically add form based authentication(Embedded Jetty - 以编程方式添加基于表单的身份验证)

            <i id='7Xf1r'><tr id='7Xf1r'><dt id='7Xf1r'><q id='7Xf1r'><span id='7Xf1r'><b id='7Xf1r'><form id='7Xf1r'><ins id='7Xf1r'></ins><ul id='7Xf1r'></ul><sub id='7Xf1r'></sub></form><legend id='7Xf1r'></legend><bdo id='7Xf1r'><pre id='7Xf1r'><center id='7Xf1r'></center></pre></bdo></b><th id='7Xf1r'></th></span></q></dt></tr></i><div id='7Xf1r'><tfoot id='7Xf1r'></tfoot><dl id='7Xf1r'><fieldset id='7Xf1r'></fieldset></dl></div>
              <tbody id='7Xf1r'></tbody>
            • <small id='7Xf1r'></small><noframes id='7Xf1r'>

                  <bdo id='7Xf1r'></bdo><ul id='7Xf1r'></ul>
                  <legend id='7Xf1r'><style id='7Xf1r'><dir id='7Xf1r'><q id='7Xf1r'></q></dir></style></legend>

                  <tfoot id='7Xf1r'></tfoot>
                  本文介绍了Embedded Jetty - 以编程方式添加基于表单的身份验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  有没有一种方法可以按照以下方式以编程方式添加基于表单的身份验证?我正在使用我自己的 LdapLoginModule.最初我使用基本身份验证,它工作正常,但现在我想在登录页面上进行更多控制(如显示徽标等)

                  Is there a way to programmatically add Form based Authentication as per below? I am using my own LdapLoginModule. Initially I use Basic Authentication and it worked OK, but now I want more control on the Login page (like display logo, etc)

                  有什么好的样品吗?

                  我正在使用嵌入式码头 v8.1.7 .我不为嵌入式码头使用任何 web.xml.码头服务器以编程方式启动.

                  I am using embedded jetty v8.1.7 . I don't use any web.xml for embedded jetty. The jetty server is started programmatically.

                  <login-config>
                      <auth-method>FORM</auth-method>
                      <realm-name>Test JAAS Realm</realm-name>
                      <form-login-config>
                          <form-login-page>/login.html</form-login-page>
                          <form-error-page>/error.jsp</form-error-page>
                      </form-login-config>
                  </login-config>
                  

                  推荐答案

                  创建一个 FormAuthenticator 并在 ServletContextHandlerSecurityHandler 上设置它.这段代码创建了一个带有 2 个 servlet 的普通服务器.第一个 servlet 以 hello 消息响应已验证的用户名.第二个 servlet 实现了一个简单的登录表单.

                  Create a FormAuthenticator and set this on your SecurityHandler for the ServletContextHandler. This code creates a trivial server with 2 servlets. The first servlet responds with a hello messsage to the authenticated user name. The second servlet implements a trivial login form.

                  您应该能够将代码粘贴到 main[] 中并运行(您的类路径中需要以下 jar;jetty-serverjetty-servletjetty-security).要进行测试,请将浏览器指向 http://localhost:8080,在看到 hello username 的响应之前,系统会提示您输入凭据(用户名/密码).p>

                  You should be able to paste the code into a main[] and run (you will need the following jars in your classpath; jetty-server, jetty-servlet and jetty-security). To test, point a browser at http://localhost:8080, you should be prompted for credentials (username / password) before seeing a response of hello username.

                  Server server = new Server(8080);
                  ServletContextHandler context = new ServletContextHandler(server, "/", ServletContextHandler.SESSIONS | ServletContextHandler.SECURITY);
                  
                  context.addServlet(new ServletHolder(new DefaultServlet() {
                    @Override
                    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                      response.getWriter().append("hello " + request.getUserPrincipal().getName());
                    }
                  }), "/*");
                  
                  context.addServlet(new ServletHolder(new DefaultServlet() {
                    @Override
                    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                      response.getWriter().append("<html><form method='POST' action='/j_security_check'>"
                        + "<input type='text' name='j_username'/>"
                        + "<input type='password' name='j_password'/>"
                        + "<input type='submit' value='Login'/></form></html>");
                      }
                  }), "/login");
                  
                  Constraint constraint = new Constraint();
                  constraint.setName(Constraint.__FORM_AUTH);
                  constraint.setRoles(new String[]{"user","admin","moderator"});
                  constraint.setAuthenticate(true);
                  
                  ConstraintMapping constraintMapping = new ConstraintMapping();
                  constraintMapping.setConstraint(constraint);
                  constraintMapping.setPathSpec("/*");
                  
                  ConstraintSecurityHandler securityHandler = new ConstraintSecurityHandler();
                  securityHandler.addConstraintMapping(constraintMapping);
                  HashLoginService loginService = new HashLoginService();
                  loginService.putUser("username", new Password("password"), new String[] {"user"});
                  securityHandler.setLoginService(loginService);
                  
                  FormAuthenticator authenticator = new FormAuthenticator("/login", "/login", false);
                  securityHandler.setAuthenticator(authenticator);
                  
                  context.setSecurityHandler(securityHandler);
                  
                  server.start();
                  server.join();
                  

                  这篇关于Embedded Jetty - 以编程方式添加基于表单的身份验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)
                  How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)
                  Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)
                  Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)
                  How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)
                  How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)
                    <legend id='GylB3'><style id='GylB3'><dir id='GylB3'><q id='GylB3'></q></dir></style></legend>
                    <i id='GylB3'><tr id='GylB3'><dt id='GylB3'><q id='GylB3'><span id='GylB3'><b id='GylB3'><form id='GylB3'><ins id='GylB3'></ins><ul id='GylB3'></ul><sub id='GylB3'></sub></form><legend id='GylB3'></legend><bdo id='GylB3'><pre id='GylB3'><center id='GylB3'></center></pre></bdo></b><th id='GylB3'></th></span></q></dt></tr></i><div id='GylB3'><tfoot id='GylB3'></tfoot><dl id='GylB3'><fieldset id='GylB3'></fieldset></dl></div>
                      <tbody id='GylB3'></tbody>

                        <bdo id='GylB3'></bdo><ul id='GylB3'></ul>
                      • <tfoot id='GylB3'></tfoot>

                        <small id='GylB3'></small><noframes id='GylB3'>