【问题标题】:Wicket auth-role : inject external user credential from JSPWicket auth-role : 从 JSP 注入外部用户凭证
【发布时间】:2011-05-29 06:14:53
【问题描述】:

我正在做一个增量 JSP --> Wicket 迁移。我保留了 JSP 应用程序并逐页迁移。我可以从 JSP wicket pages 返回并返回。但我的问题是在 JSP 中,我登录的用户凭据存储在 Bean (UserBean,scope:session) 中,并在每个页面上的 JSP 中检查登录用户豆子。

但是我怎样才能在检票口中获取这些信息?这样如果用户登录,从我的 JSP 页面,在检票页面加载时,它可以读取并设置用户信息,这样我的检票登录页面就不会出现。

我的检票口页面使用 wicket-auth-role 并检查:

@AuthorizeInstantiation("ADMIN") public class HomePage extends BasePage {.....}

我在检票口中有自己的 UserDetailsS​​ervcice 和 MyAuthenticationWebSession。

经过 Don Roby 的一些尝试和帮助,我在这里从检票口中的会话中获得了用户 ID:

        final RequestCycle requestCycle = RequestCycle.get();
        WebRequest wr=(WebRequest)requestCycle.getRequest();
        HttpServletRequest hsr= wr.getHttpServletRequest();

        AuthenticatedWebSession session = OrbitWebSession.get();
        String username = (String)hsr.getSession().getAttribute("SessionUser");

现在,我究竟可以在哪里设置用户名、密码和调用身份验证,以便我的页面不会重定向到登录页面?谁调用 authenticate() 方法以及如何调用?我在我的安全页面上尝试了 onBeforeRender() 方法,但它不起作用。 :(

【问题讨论】:

    标签: java jsp wicket


    【解决方案1】:

    更多关于登录过程的代码可能会帮助我们做出更完整的答案,但基本上您必须访问正常的 servlet 容器会话,从而从检票口中的某个位置访问该 bean。放置该逻辑的最佳位置可能是您的 MyAuthenticationWebSession 中的某个位置,以便它知道用户已登录。

    要从 wicket 代码获取 servlet 容器会话,您可以使用

    httpSession =
    ((WebRequest)request).getHttpServletRequest().getSession();
    

    如果此时您将其放入检票口代码中,您还没有此 WebRequest 对象(可能是 ServletWebRequest 对象),您可以从 RequestCycle 获取它:

    RequestCycle requestCycle = RequestCycle.get();
    Request request = requestCycle.getRequest();
    

    【讨论】:

      【解决方案2】:

      authenticate 在登录过程中由 AuthenticatedWebSession 调用。不幸的是,上述类中的大多数方法都被标记为 final,因此有点难以自定义。

      我认为你应该能够做的是在你自己会话的构造函数中使用受保护的方法 signIn(b​​oolean value) 。您在那里收到一个请求,您应该希望能够从中获得您的“SessionUser”,然后通过您的 UserDetailsS​​ervice 提取您的用户,调用 signIn(true) 并为该用户初始化正确的角色。如果调用了 signIn(true),则不应重定向到登录。

      【讨论】:

        猜你喜欢
        • 2011-08-31
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2016-06-05
        • 1970-01-01
        • 1970-01-01
        • 2014-11-12
        • 2010-11-18
        相关资源
        最近更新 更多