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

通过POST /login API实现Spring Security Login

戚成礼
2023-03-14

我正在创建一个具有自己的登录/注册视图/页面的应用程序/网页。

我的后端服务是Java的,使用Spring Security来管理用户的身份验证。

基本目标是(从应用程序):-

  1. 通过/RegisterAPI注册用户。(注册页面已在客户端)
  2. 显示登录页面(已在客户端)。
  3. 点击/loginapi以使用提供的用户名和密码对用户进行身份验证。(在JSON POST请求中提供)
  4. 成功后,返回一个cookie用于下一个操作/api调用以验证登录用户。

两次登录

这是我的Spring安全配置

//all imports

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private PasswordEncoder passwordEncoder;


    @Autowired
    public SecurityConfig(PasswordEncoder passwordEncoder) {
        this.passwordEncoder = passwordEncoder;
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/login", "/register").permitAll() //to allow these urls
                .anyRequest().authenticated().and()
                 // dont want Spring's Login page to get rendered
                .formLogin().loginProcessingUrl("/login").and().rememberMe(); 
    }


    @Override
    @Bean
    protected UserDetailsService userDetailsService() {
        //for HTTP Basic Auth - but needs to be removed to implement Cookie based authentications
        UserDetails userDetails = User.builder().
                username("admin").
                password(passwordEncoder.encode("admin")).
                roles("ADMIN").
                build();

        return new InMemoryUserDetailsManager(userDetails);

    }
}

我担心的是loginProcessingUrl()不会重定向我的URL https://

查了所有的Spring医生

如何实现这一点?


共有1个答案

李光华
2023-03-14
匿名用户

loginProcessingUrl("/path")是告诉Spring Security处理凭据的路径。请注意,这不会将请求传递给您的Controller方法。

要显示自己的登录页面而不是默认页面,您应该使用<code>登录页面(“/login”)。这是返回HTML页面的GET请求。

您可能对AuthenticationSuccessHandler感兴趣。

请参阅此示例

 类似资料:
  • 如何通过JSTL将数据打印到页面? 在上图中,我正在向控制器发送一个帖子。现在我可以轻松地访问查询字符串参数,例如将打印出测试参数。 但我不确定如何访问请求有效载荷中的数据。我尝试了${requestScope}对象,但数据似乎不在那里。 我不知道有多相关,但我使用Angular的进行调用。

  • 问题内容: 我有一个php表单,该表单具有已知的列数(例如,顶部直径,底部直径,织物,颜色,数量),但是行数未知,因为用户可以根据需要添加行。 我发现了如何采用每个字段(列)并将其放入各自的数组中。 因此,我最终在HTML中得到的是: 我现在想做的是将所有行和列都放入多维数组,然后将其内容通过电子邮件发送给客户端(最好在格式良好的表中)。我还无法真正理解如何将所有这些输入和选择组合到一个不错的数组

  • 这件事困扰了我很久,所以我想在这里得到一些帮助:) 我正在使用JDBC连接到一个老旧的Sybase Adaptive server 6(!!!)我甚至在网上找不到它的JDBC驱动程序,所以我从安装目录中复制了它们:) 现在,插入和查询以及所有其余的db操作都工作得很好,但是我在调用存储过程时遇到了问题。让我们首先从一段代码开始: 提前道谢!/IVO

  • 问题内容: 我有一个链接: 触发ajax调用 但是在控制台中,我看到以下内容: 处理了ajax文件,但是POST数据为空,并且没有执行成功操作,因此将其用零发布,并且类未更改 我凝视着……有什么明显的东西吗? 问题答案: 不会自动传递给AJAX回调函数。您可以使用参数告诉jQuery通过它:

  • 问题内容: 我想使用将文件(特别是图像)上传到REST Server 。我已经导入/添加了构建路径和。而且我在堆栈跟踪中收到以下错误。 这有效吗? HTTP POST代码 堆栈跟踪 问题答案: 您似乎缺少依赖项。 我有,,并用和在我的类路径罐子。 我也使用而不是使用header属性。 查看Internet媒体类型以了解更多详细信息

  • 问题内容: 我有一个基于jquery的单页webapp。它通过AJAX调用与RESTful Web服务进行通信。 我正在尝试完成以下任务: 将包含JSON数据的POST提交到REST URL。 如果请求指定JSON响应,则返回JSON。 如果请求指定PDF / XLS / etc响应,则返回可下载的二进制文件。 我现在有1&2,并且客户端jquery应用通过基于JSON数据创建DOM元素在网页上显