繁体   English   中英

如果拦截器中的身份验证失败,Struts2将返回json

[英]Struts2 return json if authentication failed in interceptor

请注意,我不是Java开发人员,所以我的问题可能有一些令人心碎的假设和无效的代码段。

我有一个拦截器,负责登录身份验证。

<global-results>
   <result name="login">/admin/login.jsp</result>
</global-results>

如图所示,当身份验证失败时,它将重定向到login.jsp,即返回值为“ login”(在这种情况下)

我想要实现的是,我返回一些其他值(例如“ loginAjax”),并且它不应发送HTTP 302,而应返回JSON响应。

我不知道那是否可能。 我在struts.xml中有另一部分,当从Action返回特定值时,该部分返回json。

<result name="success" type="json">
    <param name="includeProperties">
        return_id, return_message
    </param>
</result>

我不知道如何将这两部分捆绑在一起,并使其在同一个拦截器中工作。

全局结果与一个或多个“拦截器”或“动作”无关:它对每个人都是全局的,因此无论返回谁,它都会在返回时呈现。

您需要添加json类型的全局(使其与其他登录结果一致,即全局),如下所示:

<global-results>
    <result name="login">/admin/login.jsp</result>
    <result name="loginAjax" type="json" />
</global-results>

然后,您可以发送特定的statusCode或errorCode, 如此处所述

如果你需要了解你应该从拦截返回什么样的结果,你应该像描述继续在这个其他答案 ,通过检查,它会在成功的情况下返回的结果的类型。

PS:哦,考虑雇用Java开发人员来正确地完成Java的工作:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM