如何解决Micronaut jwt-cookie身份验证:身份验证失败输入错误密码时,如何保留用户名作为响应?
我正在尝试使用Micronaut 2.0构建登录表单(请参见tutorial)。 不幸的是,身份验证失败会从登录表单中清除用户名(和密码)。这使用户更加困难。我正在寻找一种将用户名传递回登录表单的方法,以便用户收到登录失败但不必重新输入用户名的消息。
问题似乎是CookieLoginHandler仅重定向到可配置的authFailed网址(例如/ login / authFailed),这意味着带有用户名的请求上下文已消失。
我首先想到我可以覆盖覆盖JwtCookieLoginHandler,并将用户名作为(可选)查询参数添加到authFailed url中。但是,由于某些构造函数参数引用了非公共类,因此覆盖此类非常困难。
解决方法
不确定用于前端的技术是什么,但是如何将用户名保存在浏览器的本地存储中呢?然后它独立于后端,并且在用户重新打开浏览器时也可用。
如果您真的想用micronaut解决它,请使用以下方法创建自己的控制器:
@Post
public Single<MutableHttpResponse<?>> login(
@Valid @Body UsernamePasswordCredentials usernamePasswordCredentials,HttpRequest<?> request) {
Flowable<AuthenticationResponse> authenticationResponseFlowable = Flowable
.fromPublisher(authenticator.authenticate(request,usernamePasswordCredentials));
return authenticationResponseFlowable.map(authenticationResponse -> {
if (authenticationResponse.isAuthenticated()) {
UserDetails userDetails = authenticationResponse.getUserDetails().get();
eventPublisher.publishEvent(new LoginSuccessfulEvent(userDetails));
return loginHandler.loginSuccess(userDetails,request);
} else {
eventPublisher.publishEvent(new LoginFailedEvent(authenticationResponse));
return loginHandler.loginFailed(authenticationResponse,request);
}
}).first(HttpResponse.status(HttpStatus.UNAUTHORIZED).body(usernamePasswordCredentials.getUsername()));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。