当前位置: 首页 > 知识库问答 >
问题:

在Spring MVC rest api中实现用户身份验证

何华灿
2023-03-14

我已经构建了一个基本的crud spring mvc rest api,并且希望添加基本的身份验证,用于验证用户并添加登录和注销。我找到了一个关于spring MVC的教程。

我尝试实现了基本的身份验证,代码如下:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    UserBuilder users = User.withDefaultPasswordEncoder();

    auth.inMemoryAuthentication()
    .withUser(users.username("marie").password("yourmarie").roles("USER"));
}

使用上面的代码,它提供身份验证,但当凭据无效时,它返回一个异常。相反,如果可能的话,我希望返回某种jason或消息,这样我就可以根据返回的值在前端处理操作。

另一方面,如果我尝试在没有身份验证的情况下访问endpoint,它会给我一个登录表单。在这里,我也想得到一个回应。

另外,还想添加注销功能。

请引导。提前道谢!

共有1个答案

李经国
2023-03-14

如果您发现了一个异常,但凭据无效,那么只需在控制器中捕获该异常。创建自己的身份验证异常并用适当的消息抛出它。

catch(Exception ae){抛出新的AuthenticationException(“无效凭据”);}

对于注销,您需要从存储(内存)中删除令牌,您可以检查请求中的令牌,如下所示:

(stringutils.hastext(httpservletrequest.getheader(“authorization”))){String access_token=request.getheader(“authorization”);}

https://www.baeldung.com/java-config-spring-security

 类似资料:
  • 我对laravel中内置的用户身份验证功能有一个疑问。我让身份验证部分开始工作,但它似乎没有在会话中存储用户 管理控制程序代码: 中间件身份验证。php代码: 我有: 正确详细信息和登录页面后的路线路线路线: 注销后重定向路由: 我的问题是如何在这段代码中使用中间件。因为注销后我可以轻松访问url。后退按钮也在工作,我希望通过中间件进行laravel用户身份验证。。

  • 于是我在这里看到:https://firebase . Google . com/docs/auth/web/account-linking # link-auth-provider-credentials-to-a-user-account现在可以在Firebase中链接用户账号了。我还看到Firebase提供了匿名认证的功能,它为一个用户创建一个用户会话,不需要任何凭证。 在我们的应用程序中,

  • JAAS 的配置 Kafka 使用Java验证和授权API(JAAS)来完成 SASL 配置. Kafka brokers 的 JAAS 的配置 KafkaServer 是每一个 KafkaServer/Broker 的 JASS 文件里面的节点名称。 在这个节点中,提供了用于所有 brokers 之间通信的 SASL 客户端连接的 SASL 配置选项。 Client 节点是用于认证 SASL 与

  • 我想解释一个认证流程,并希望你能回答,如果亚马逊认知的正确解决方案。 要求:对于每个登录(用户名/密码、Facebook、Google等),都应该有一个有效的用户池帐户。 Flow Facebook(不存在身份或用户池帐户)。 客户点击“使用Facebook登录”: 1) 调用GetOpenIdToken- 1a)同时,使用FB AccessToken从Facebook获取电子邮件地址 2)使用生

  • 我一直在寻找使用各种AWS服务来处理我们下一个主要项目的基础设施。我们开始研究EC2实例上的docker容器,但在进一步研究AWS Lambda之后,这似乎是一条值得探索的道路。 使用AWS Lambda范例,我们只需使用Lambda函数作为逻辑粘合剂,将数据和事件(来自其他AWS服务)保存在一起。 例如,如果我们产品的用户创建了一个新记录,AWS Lambda可以在该事件中触发,我们可以调用La

  • 问题内容: 我正在运行此节点服务器: 我想为此服务器添加登录表单。因此,当用户通过身份验证时,它将显示。 进程中查询功能,如果未提供任何命令,则将文件返回给客户端,因此我可以将登录命令从客户端发送到服务器,但是当服务器接收到带有用户名密码的登录命令时,服务器应如何处理,应如何处理登录请求并返回登录成功或失败的信息,编写此部分需要帮助。 我试过了。 请建议我该如何添加会话,我尝试在登录功能中添加,请