首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring rbac数据库认证

spring rbac数据库认证
EN

Stack Overflow用户
提问于 2020-10-01 17:37:49
回答 1查看 320关注 0票数 1

我正在尝试在spring boot中创建基于角色的授权,并且我对spring来说是全新的,我主要使用PHP。

找到此链接:

https://spring.io/guides/gs/securing-web/

一切都很好,但与数据库没有连接,我还试图了解如何创建与数据库的授权

代码语言:javascript
复制
public class UserDetailsServiceImp implements UserDetailsService {
    
    private UserRepository userRepository;
    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {

    /*Here we are using dummy data, you need to load user data from
     database or other third party application*/
        User user = findUserbyUername(username);

        UserBuilder builder = null;
        if (user != null) {
            builder = org.springframework.security.core.userdetails.User.withUsername(username);
            builder.password(//new BCryptPasswordEncoder().encode(user.getName())
                    user.getName() );
            builder.roles("USER");
        } else {
            throw new UsernameNotFoundException("User not found.");
        }

        return builder.build();
    }

    private User findUserbyUername(String username) {

        return userRepository.findByName(username);
    }
}
代码语言:javascript
复制
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/", "/home", "/demo/all", "/demo/add", "/demo/findby").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
                .logout()
                .permitAll();
    }

    /*@Bean
    @Override
    public UserDetailsService userDetailsService() {
        UserDetails user =
                User.withDefaultPasswordEncoder()
                        .username("user")
                        .password("password")
                        .roles("USER")
                        .build();

        return new InMemoryUserDetailsManager(user);
    }*/

    @Bean
    public UserDetailsService userDetailsService() {
        return new UserDetailsServiceImp();
    };

    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    };

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService());//.passwordEncoder(passwordEncoder());
    }
}

UserRepository

代码语言:javascript
复制
public interface UserRepository extends CrudRepository<User, Integer> {

    User findByName(String name);

}

用户

代码语言:javascript
复制
@Entity // This tells Hibernate to make a table out of this class
public class User {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer id;

    private String name;

    private String email;

    private String[] roles;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

在浏览器收到“无效用户名和密码”时。

这里有什么地方是错的,我从数据库中找到的唯一一件事就是通过名称和比较

请帮帮我!任何了解春天的人

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-02 00:38:56

在您的UserDetailsServiceImp类中尝试以下内容:

代码语言:javascript
复制
@Autowired
private UserRepository userRepository;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64152699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档