gpt4 book ai didi

android - 保护 Spring RESTful Web 服务 API 免受未经授权的访问?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:13:30 24 4
gpt4 key购买 nike

我已经使用不同的 API 成功创建了一个 Spring RESTful web 服务。现在我应该保护它们免受未经授权的访问。我关注了http://www.beingjavaguys.com/2014/10/spring-security-oauth2-integration.html并且登录逻辑与我的完全不同。有人可以帮助我继续前进吗?

获取用户登录请求

 @RequestMapping(value = "/login", method = RequestMethod.POST)
@ResponseBody
@ResponseStatus(HttpStatus.OK)
public UserResponse login(@RequestBody final UserLoginRequest userRequest) throws ServletException, IOException {
UserResponse userResponse = new UserResponse();
try {
userResponse = accessService.login(userRequest);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return userResponse;
}

处理用户登录请求

 @Transactional
public UserResponse login(UserLoginRequest userRequest) throws SQLException,
ClassNotFoundException, IOException {
UserResponse userResponse = new UserResponse();

int status = 0;

//boolean isExist = loginDao.isUserExist(userRequest.getUsername(), userRequest.getPassword());
User user = loginDao.getUser(userRequest.getEmailID());
if (user != null) {
if (userRequest.getPassword().equals(user.getPassword())) {//Case sensitive password and added to check status
//User exist
if (user.getStatus().equals("1")) {
//Device token check
loginDao.isDeviceTokenExists(userRequest, user.getProfileId());

status = 2;
} else {
status = 3;
}
} else {
status = 4;
}
} else {
status = 1;
}
if (status == 1) {
userResponse.setCode(WeekenterConstants.USER_EMAIL_EXIST_CODE);
userResponse.setMessage("User does not exists.Please Register.");
} else if (status == 2) {
userResponse.setCode(WeekenterConstants.SUCCESS_CODE);
userResponse.setMessage("User login success");
userResponse.setId(user.getProfileId());
} else if (status == 3) {
userResponse.setCode(WeekenterConstants.FAILURE_CODE);
userResponse.setMessage("Your Account is blocked. Please contact Weekenter administrator.");
userResponse.setId(user.getProfileId());
} else if (status == 4) {
userResponse.setCode(WeekenterConstants.FAILURE_CODE);
userResponse.setMessage("Password is wrong.");
userResponse.setId(user.getProfileId());
}
return userResponse;
}

我有用于获取国家/地区、用户列表等的 API。这些服务应该只在用户有效后才向 Android 客户端提供数据。我知道身份验证将使用访问 token 进行处理。我怎样才能以标准方式做到这一点?

最佳答案

我认为您需要有一个单独的流程来授权设备在您的应用程序中使用。

我曾开发过一个应用程序,在该应用程序中注册了平板电脑以使用某个应用程序。平板电脑 ID 保存在 Apache 服务器可以访问的简单文本文件中。然后,所有 REST 请求都有一个包含设备 ID 的特殊 header X_DEVICEID,Apache 使用的 PHP 脚本会在文件中检查此 ID,并且只有在该 ID 是针对已注册设备的情况下才会给出响应。

允许的设备 ID 文件充当一种防火墙来阻止未注册的设备。

关于android - 保护 Spring RESTful Web 服务 API 免受未经授权的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31398272/

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