gpt4 book ai didi

java - 如何在 Jersey 中实现这种身份验证机制

转载 作者:行者123 更新时间:2023-12-01 11:33:50 24 4
gpt4 key购买 nike

我是 Jersey REST Framework 的新手,所以如果这是一个愚蠢的问题,请原谅。

我将 Tomcat 与 Hibernate 和 Jersey REST Web 服务结合使用。

我的 Web 应用程序中有一组 HTML 页面

login.html
dealer.html
sales.html

我不希望用户直接访问除login.html之外的HTML页面

所以要解决这个问题,当按下提交时,在login.html下调用

对后端进行以下调用

@Path("/webchecklogin")
public class WebLoginCheck {
@Context
private HttpServletResponse response;
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces("application/json")
public String getData(LoginInfo loginInfo ) throws JSONException,ClassNotFoundException, SQLException
{
String ID = loginInfo.getID();
String email = loginInfo.getEmail();
// validate this values with Database and if successfully logged in , stored them in session AND cookies also
}
}

在 Dealer.html 和 sales.html 中,在页面准备就绪时,我正在调用如下所示的服务

var checkcallajax = $.ajax({
type: 'GET',
url: url + '/ORIENT/orn/checkifuserloggedin',
jsonpCallback: 'jsonCallback',
success: function(response) {

}
})

@Path("/checkifuserloggedin")
public class CheckIfUserLoggedIn {
@Context
private HttpServletRequest request;
@GET
@Consumes(MediaType.APPLICATION_JSON)
@Produces("application/json")
public String checkIfUserLoggedIn() throws JSONException,ClassNotFoundException, SQLException
{
// On what basis , should i check wheher the USER is logged or NOT
// I tried storing data with Session and cookies , but i am unable to retrive them here
//return true or false
// based on true or false , i am redireting user to appropiate page
}
}

有人可以告诉我如何解决这个问题

最佳答案

RestFUL Web 服务应该是无状态的,因此理论上,您可以在每个请求中发送凭据,从“服务器角度”来看,这将是完全无状态的

大多数人会发现这很麻烦,需要大量资源,并且从安全角度来看,在客户端上存储凭据有些糟糕。

另一种方法可能是您的登录方法返回一个 token ,需要在每次请求时将其重新发送(可能在 header 中)到服务器。

  • 客户端必须知道如何存储它( session cookie?在域上)服务 html,如果您处于 CORS 场景中)

  • 服务器必须知道如何验证 token 。

最重要的是, token 的验证可以在 JaxRS 过滤器中完成...在到达服务入口点之前。更好的是,此过滤器可以将角色添加到请求上下文,因此您可以在您的服务中使用 @RolesAllowed 注释。

我“非常个人地”避免依赖 javax.servlet.Session,因为这从根本上来说是有状态的。但是,您应该能够做到这一点,因为客户端将 jSessionId(其他 cookie 名称)存储在 session cookie 中。如果它不起作用,则可能存在 CORS 或其他特定于域的问题,从而阻止客户端自动存储和返回此 cookie。

希望有帮助。

关于java - 如何在 Jersey 中实现这种身份验证机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30196522/

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