-1

我有个问题。在我的应用程序中,我有一个用于身份验证的现有对象(在我的自定义身份验证提供程序类中)。该对象很重要,因为它包含有关连接的信息。身份验证后,此对象存在。现在我想将此对象传递给 JSP 页面。我不知道该怎么做。

我试图doGet()为这个类编写方法,在 JSP 上制作request.setAttribute("object", object)和获取这个对象request.getAttribute("object"),但它不起作用。我也试过用,<jsp:useBean>但还是不行。我没有任何其他解决方案。

你会帮忙吗?提前致谢。

4

1 回答 1

0

好的,所以我在连接到 ldap 服务器(ldapConnect 类)的自定义身份验证提供程序中有一个 retrieveUser 方法:

@Override
protected UserDetails retrieveUser(String username,
        UsernamePasswordAuthenticationToken authentication)
        throws AuthenticationException {

    log.entry("retrieveUser", authentication.getPrincipal());

    LdapUser userDetail = null;

    UsernamePasswordAuthenticationToken userToken = authentication;
    String userName = userToken.getName();
    userName = userName != null ? userName.toLowerCase() : userName;
    String password = userToken.getCredentials().toString();

    if (password == null || "".equals(password)) {
        log.debug("retrieveUser", "no password provided");
        throw new AuthenticationCredentialsNotFoundException(
                "Invalid login or password");
    }

    // try to connect with ldap and check retrieved username and
    // password
    LdapConnect ldapConnect = new LdapConnect();
    connect = ldapConnect.connection(userName, password);

    if (connect) {
        log.debug("retrieve user", "correct connection with ldap");
        userDetail = new LdapUser();
        setUserDetails(userDetail, ldapConnect.getCtx(), username);
        userDetail.setLdapConnect(ldapConnect);
    }

    if (userDetail == null) {
        throw new UsernameNotFoundException("User not found");
    }

    return userDetail;

}

之后,我想访问现有的 LdapConnect 类(恰好访问此类的一个属性),并从 HttpServlet 类扩展我的 LdapConnect 类,并实现了 doGet 方法:

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    request.setAttribute("ctx", ctx);
    getServletContext().getRequestDispatcher("/ldap_saved.jsp").forward(
            request, response);
}

最后,我尝试在我的 jsp 文件中从 LdapClass 获取 ctx 属性:

    <%DirContext ctx = (DirContext) request.getAttribute("ctx");%>
<%=ctx.toString();%>

但通过这种方式,我没有得到现有的 ctx 对象。

于 2013-01-29T08:13:56.733 回答