gpt4 book ai didi

java - 使用 Spring security 3 仅使用用户名对 REST 用户进行身份验证

转载 作者:行者123 更新时间:2023-11-30 04:25:15 25 4
gpt4 key购买 nike

这就是交易。我必须仅使用应用程序用户的用户名进行一次身份验证,并且必须使用 Angular、Spring 和 mysql。我已经有一个接收电子邮件(用户名)的 REST POST 服务,我必须检查该用户是否存在于数据库的用户表中,并且我必须使用以下 JSON 结构进行响应:

{"response":{"loggedIn":"true"}} or {"response":{"loggedIn":"false"}}

我找到了一个在 spring security 上使用 http-basic 身份验证的示例,并且工作正常,问题是该方法对我不起作用,因为该方法需要用户名和密码,但只有我需要用户名并检查该用户是否在数据库中。

我的问题是如何使用 REST 服务和仅包含用户名字段的单一身份验证来通过 Spring Security 进行身份验证?

这是我的 spring-context.xml

<security:http pattern="/login" security="none">
</security:http>

<security:http auto-config="true">
<security:intercept-url pattern="/**" access="ROLE_REST" />
<security:http-basic />
<security:logout logout-url="/logout" logout-success-url="/" invalidate-session="true" delete-cookies="true" />
</security:http>

<security:authentication-manager>
<security:authentication-provider user-service-ref="watUserDetailService">
<security:password-encoder hash="md5" />
</security:authentication-provider>
</security:authentication-manager>

这是“我的休息” Controller :

@Controller
public class UserController {

@Autowired
ILoginService loginService;

@RequestMapping(value = "/login", method = RequestMethod.POST, produces = "application/json", consumes = "application/json")
public @ResponseBody IResponse login(@RequestBody @Valid LoginForm form, BindingResult result) {
IResponse loginReponse = null;

if (result.hasErrors()) {
ResponseError errorReponse = new ResponseError();
errorReponse.getError().put("key", KeyConstants.NOT_VALID_EMAIL_ERROR_KEY );
loginReponse = errorReponse;
} else {
Response response = new Response();
User loggedUser = null;
try {
loggedUser = loginService.login(form.getEmail());
if (loggedUser != null) {
response.getResponse().put("loggedIn", Boolean.TRUE.toString());
}
loginReponse = response;
} catch (ServiceException e) {
response.getResponse().put("loggedIn", Boolean.FALSE.toString());
loginReponse = response;
}

}
return loginReponse;
}

}

谢谢您的有用帮助,并对我的英语表示抱歉。

最佳答案

在 Spring Security 中,您可以添加自定义身份 validator 。您需要一个简单地忽略密码中的任何内容并返回 true 的工具。然后你传递一个空字符串作为密码,就这样了。

关于java - 使用 Spring security 3 仅使用用户名对 REST 用户进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16070827/

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