我有一个通过spring boot rest API与mysql的身份验证问题。我想使用“Save user”方法从服务中创建一个用户,并访问这个用户信息和rest API。在不使用任何mvc结构(html、js、css等)的情况下,我希望使用服务创建一个用户,并与该用户一起登录以RestAPI。我在下面提到了项目的所有单元。如果你帮忙,我将不胜感激。
用户
@Data
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
private int id;
@Column(name = "email")
@Email
@NotEmpty
private String email;
@Column(name = "password")
@Length(min = 5)
@NotEmpty
private String password;
@Column(name = "name")
@NotEmpty
private String name;
@Column(name = "last_name")
@NotEmpty
private String lastName;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles;
//G&S
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Set<Role> getRoles() {
return roles;
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
}
@Data
@Entity
@Table(name = "role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "role_id")
private int id;
@Column(name = "role")
private String role;
//G&S
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
}
public interface UserRepository extends JpaRepository<User, Integer>{
User findByEmail(String email);
List<User> findByName(String name);
List<User> findByLastName(String lastName);
}
public interface RoleRepository extends JpaRepository<Role, Integer>{
Role findByRole(String role);
}
@org.springframework.stereotype.Service
public class UserService {
@Autowired
UserRepository userRepository;
@Autowired
RoleRepository roleRepository;
@Autowired
public UserService(UserRepository userRepository,
RoleRepository roleRepository) {
this.userRepository = userRepository;
this.roleRepository = roleRepository;
}
//CREATE USER
public User saveUser(User user) {
user.setPassword("mutlu1234");
Role userRole = roleRepository.findByRole("ADMIN");
user.setRoles(new HashSet<Role>(Arrays.asList(userRole)));
return userRepository.save(user);
}
}
@Controller
public class MainController {
@Autowired
UserService userService;
@RequestMapping(value="/", method = RequestMethod.GET)
public String createUser() {
User mutlu = new User();
userService.saveUser(mutlu);
return "Created";
}
@RequestMapping(value = "/private/{accountNumber}")
public String getPrivateAccountData(@PathVariable final int accountNumber){
return "Private account lined:"+accountNumber;
}
}
public class SecurityConfig extends WebSecurityConfigurerAdapter{
@Autowired
private DataSource dataSource;
@Override
public void configure(HttpSecurity httpSecurity) throws Exception{
httpSecurity.authorizeRequests().antMatchers("/private/*").hasRole("ADMIN").and().formLogin();
}
@Autowired
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.
jdbcAuthentication()
.dataSource(dataSource)
.usersByUsernameQuery("select email, password from users where email=?")
.authoritiesByUsernameQuery("select u.email, r.role from users u inner join user_role ur on(u.user_id=ur.user_id) inner join role r on(ur.role_id=r.role_id) where u.email=?")
.dataSource(dataSource);
}
}
REPLACE INTO `role` VALUES (1,'ADMIN');
REPLACE INTO `role` VALUES (2,'USER');
ApplicationProperties
server.port=8090
spring.datasource.url=jdbc:mysql://localhost:3306/auth?useUnicode=true&characterEncoding=UTF-8&useLegacyDatetimeCode=false&serverTimezone=Turkey
spring.datasource.username=root
spring.datasource.password=
spring.datasource.initialization-mode=always
spring.jpa.hibernate.ddl-auto=none
我认为“/”上的get方法是问题所在。它应该是将数据持久化到数据库的post方法。尝试将其更改为post方法。
我有麻烦让我的数据库连接到WAMP。我做这件事已经有5年了,所以我有点生疏了。我将我的Mysql升级到8.0时遇到了这个错误 我刷新了我的特权,并将插件更改为本机的根。在这一点上我被难倒了。有人能帮帮我吗? 下面是我的数据库类,直到第37行 /** > class Database*/class Database{ 专用$IP、$username、$password、$database; /**
我已经安装了一个MySQL企业版的试用版,当使用捆绑工作台软件连接时,我得到以下错误: 无法加载身份验证插件缓存\u sha2\u密码:找不到指定的模块 在那里我能找到的信息很少。大多数解决方案返回到旧的身份验证方法,但我不想这样做,而且它似乎无论如何都不起作用。。。 HeidiSQL给出了相同的错误消息。 有什么建议吗?
我正在使用jwt auth在我的API中创建RESTful身份验证资源。当客户端应用程序调用登录资源时,如果用户已登录,则必须使当前令牌无效,从而生成新令牌。 但如果当前令牌被列入黑名单,则会抛出。 如何验证令牌是否被列入黑名单?或者如何正确执行用户“注销”?我试图在jwt auth API源代码上找到,但不存在
我是Apache Shiro的初学者。我一直在跟踪文档和许多其他教程,博客等,但我就是无法使身份验证工作。当我尝试使用有效的用户名和密码登录时,总是会引发。我正在使用DynamoDB作为存储用户凭据的自定义领域,但我真的不认为这有什么关系。显然,我存储和/或执行凭据匹配的方式是不正确的。以下是我的设置:
我试图在一个反应式Spring Boot应用程序中配置一个Spring Security性,该应用程序具有一个Vuejs前端,在未经身份验证时将用户重定向到外部OpenID提供程序(用于身份验证)。在用户通过OpenID提供程序进行身份验证并重定向回应用程序(前端)后,将根据OpenID提供程序的响应创建用户名密码身份验证令牌(身份验证),并手动进行身份验证。 但是,在执行此操作时,应用程序似乎无
问题内容: 我试图让我的自定义Java应用程序使用我们的Active Directory服务器进行身份验证,但由于某种原因我无法使其正常工作。谁能看到为什么呢?这是我的方法如下: 结果: 问题答案: 你尝试过这种方式吗? 也更换 与