学习springseacurity
作者:互联网
springsecurity,一个很秀的框架,今天开始一步一步的去接触它,第一步添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
添加上依赖,我去访问项目,直接就这样了
开始慢慢的去搞定它,新增一个配置类,手动增加一个用户
输入一个错误的示例
我输入正确的也没能登录进去,后台报错 There is no PasswordEncoder mapped for the id "null"
因为他的密码有加密方式,这里我们没有使用加密的,解决方法:可以去配置一下加密或者不使用加密,我选择先不加密,配置如下
@Bean
public static NoOpPasswordEncoder passwordEncoder() {
return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance();
}
再次登录成功访问到我的请求。
开始处理不同用户不同权限
@Component
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll() //这个请求不拦截
.antMatchers("/index1/**").hasRole("vip1") //有角色为vip1的才可以访问到index1下面的请求
.antMatchers("/index2/**").hasRole("vip2")
.antMatchers("/index3/**").hasRole("vip3");
http.formLogin();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("admin").password("123456").roles("vip1","vip2","vip3")
.and().withUser("test").password("123456").roles("vip1")
.and().withUser("ljw").password("123456").roles("vip2");//设置角色
}
@Bean
public static NoOpPasswordEncoder passwordEncoder() {
return (NoOpPasswordEncoder) NoOpPasswordEncoder.getInstance();
}
}
使用admin登录测试:都能访问到
使用test用户测试
接下来要处理一下 如何将他的登录页修改为自己的,这样就ok了,注意事项:
1我没写其他东西,则默认我登录请求为login 用户名和密码为username和password,如果自己想改,自己再增加配置即可http.formLogin().loginPage("/toLogin").usernameParameter("username").passwordParameter("password").loginProcessingUrl("/login");
刚才是所有用户都能看到所有的东西,现在处理不同用户只能看到自己对应的链接。我使用的是thymeleaf,所以要整合一下,添加依赖 配合标签使用
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</dependency>
现在来看效果,未登录
admin 登录
test 登录
接下来处理从数据库查询用户了
标签:NoOpPasswordEncoder,加密,vip1,登录,antMatchers,学习,password,springseacurity 来源: https://blog.csdn.net/lovely960823/article/details/111660296