gpt4 book ai didi

java - Wicket 口授权角色 : inject external user credential from JSP

转载 作者:行者123 更新时间:2023-12-02 08:17:06 24 4
gpt4 key购买 nike

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

但是我怎样才能在 Wicket 口获取这些信息呢?这样,如果用户登录,则从我的 JSP 页面中,在 wicket 页面加载时,它可以读取该内容并设置 suer 信息,以便我的 wicket 登录页面不会出现。

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

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

我在 Wicket 口有自己的 UserDetailsS​​ervcice 和 MyAuthenticationWebSession。

经过 Don Roby 的一些尝试和帮助,我在这里从 wicket 的 session 中获取了用户 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() 方法,但它不起作用。 :(

最佳答案

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

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

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

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

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

关于java - Wicket 口授权角色 : inject external user credential from JSP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6166255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com