我目前正在尝试创建一个控制器,以便使用Thymeleaf与html文件交互。过了一会儿,我注意到也许我的控制器(更具体地说是@PostMapping)根本没有与我的html页面交互。我之所以这样认为,是因为无论我以电子邮件/密码的形式输入什么(正确或错误),它都会将我链接到(/登录?错误)。我测试了一个简单的条件,一旦调用Post请求,它会在html页面上打印“HERE”,以查看情况是否属实。打印从未出现。这篇文章的目的是理解为什么这个简单的post请求被忽略。因为我提出了一个简单的Post请求,所以我假设“Here”无论如何都会被打印出来。
我的html代码
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="ISO-8859-1">
<title>Login Page</title>
</head>
<body>
<form th:action="@{/login}" th:object="${user}" method="post">
<div th:if="${here}">
<p>HERE</p>
</div>
<div>
<label>Email</label>
<input type="text" th:field="*{email}">
</div>
<div>
<label>Password</label>
<input type="text" th:field="*{password}" placeholder="Password">
</div>
<input type="submit" value="submit"/>
</form>
</body>
</html>
我的控制器类
@Controller
public class UserController {
UserRepository userRepo;
UserService userService;
@GetMapping("/login")
public String login(Model model) {
model.addAttribute("user", new User());
return "login";
}
@PostMapping("/login")
public String loginUser(@ModelAttribute("user") User user, Model model) {
model.addAttribute("here", true);
return "login";
}
}
我的Spring Security配置
@Configuration
@EnableWebSecurity
public class WebSecurityConfig {
private final UserService userService;
private final BCryptPasswordEncoder passwordEncoder;
public WebSecurityConfig(UserService userService, BCryptPasswordEncoder passwordEncoder) {
this.userService = userService;
this.passwordEncoder = passwordEncoder;
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeHttpRequests()
.antMatchers("/registration/**", "/login")
.permitAll()
.anyRequest()
.authenticated().and()
.formLogin().loginPage("/login").permitAll();;
return http.build();
}
protected void configure(AuthenticationManagerBuilder auth) throws Exception{
}
@Bean
public DaoAuthenticationProvider daoAutenticationProvider() {
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setPasswordEncoder(passwordEncoder);
provider.setUserDetailsService(userService);
return provider;
}
}
您需要添加其他配置来通知将验证哪些字段,因为默认情况下,spring security会验证用户名和密码。如果您使用的是电子邮件,请尝试以下操作:
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeHttpRequests()
.antMatchers("/registration/**", "/login")
.permitAll()
.anyRequest()
.authenticated().and()
.formLogin()
.loginPage("/login")
.usernameParameter("email")
.passwordParameter("password")
.permitAll();
return http.build();
}
您可以在以下位置看到我的一个示例:https://github.com/Rafael472/WebControl/blob/main/src/main/java/com/SystemsSolutions/WebControl/security/config/SecurityConfig.java
我为用户注册创建了简单的Thymeleaf表单模板。当我点击SubmitForm按钮时,POST请求被发送(正如我在浏览器日志中看到的),但它从未由saveRegistration控制器方法处理,并用(method=RequestMethod.POST)注释 Spring版本4.2.2,Spring Security4.0.2,Spring Boot启动器1.2.7模型对象使用Hibernate验
在中,但它似乎对我不起作用。 环境:,,
交换机与控制器交互 我们可以启动一个简单的控制器,默认没有任何流表项,仅仅作为一台带学习功能的交换机。控制器默认监听端口是 6633。 以下控制器与交换机之间的消息交互过程,可以通过 wireshark,配置 of 过滤器观察到交换机跟控制器之间的交互消息。 参见下面的表格。 消息 类型 描述 Hello Controller->Switch 跟着 TCP 握手,控制器发送它的版本号到交换机。 H
我是百里香菜鸟。我试图创建一个简单的crud应用程序。我试图在删除按钮上删除客户类的对象。我如何使用百里香叶为调用deleteUser的方法设置参数(例如- id)。这是我的控制器。 以下是我的看法。
我有一个主控制器来处理我的主控制器。fxml和处理弹出窗口的第二个控制器。fxml 从主控制器按下按钮时,弹出窗口出现。在弹出窗口中添加玩家。玩家通过textfield添加到数组中,并且必须发送回主控制器。我在弹出控制器中有一个名为“Btnaply”的按钮,当按下该按钮时,我想关闭弹出窗口并从主控制器类处理数组。我只想让我的主控制器类知道弹出窗口。 这是我从主控制器创建弹出窗口的方式: 现在的问题
问题内容: 我必须将数据从html页面(带有很少输入文本字段的简单形式)发送到页面控制器,然后再发送到数据库。我正在使用3.0版的百里香2.0.17。我搜索并检查了一些解决方案,但是没有用。也许有人遇到了同样的问题,并找到了一些好的解决方案。请帮忙。谢谢 问题答案: 如本教程所建议,你需要使用,并在中创建一个表单。 看起来像这样: 控制器: HTML: Foo.java: 希望这可以帮助。