【KiangKiang的代码】—— Spring Boot 中 Spring Security的简单实现

Spring Security简单实现

1、创建一个自定义类继承ConfigurerAdapter,
2、在该类中使用@EnableWebSecurity,
3、在其中重写config方法来配置所需要的安全配置

代码示例:
创建一个自定义类:MySecurity

package com.example.gameboxadminserver.contsfig;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@Configuration
@EnableWebSecurity
public class MySecurity extends WebSecurityConfigurerAdapter {
    @Autowired
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()).withUser("hyx1").password(new BCryptPasswordEncoder().encode("123456")).roles("USER");
        auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder()).withUser("hyx").password(new BCryptPasswordEncoder().encode("123456")).roles("ADMIN");
        //System.out.println("加密后"+new BCryptPasswordEncoder().encode("123456"));
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/admin/adminLogin").permitAll()
                .antMatchers("/user/getAllUser").permitAll()
                .antMatchers("/suggest/getAllSuggest").permitAll()

                .anyRequest().permitAll();
    /*.authenticated()
                .and()
                 .formLogin()
                .loginPage("/admin/adminLogin")
                .usernameParameter("adminName").passwordParameter(new BCryptPasswordEncoder().encode("adminPwd"))
                .defaultSuccessUrl("/user/getAllUser")
                .failureUrl("/suggest/getAllSuggest");*/
    }
}

其中有两个configure方法
configure(AuthenticationManagerBuilder auth)
configure(HttpSecurity http)

其中

configure(AuthenticationManagerBuilder auth)//用于用户认证,添加用户给定权限
auth.inMemoryAuthentication().withUser(“aaaa”).password(“123456”).roles(“USER”);//添加用户aaaa,给予用户权限
anth.inMemoryAuthentication().withUser(“admin”).password(“admin”).roles(“ADMIN”,“DBA”);//添加用户admin,给予管理员、DBA权限

configure(HttpSercurity http)//用于用户授权
//其下的authorizeRequests()方法有很多子节点
//macher声明顺序
//antMatchers用Ant匹配路径
//regexMatchers正则表达式匹配路径
anyRequest //匹配所有路劲
.access(String)//Spring EL表达式结果为true
.anonymous()//匿名可以访问
.denyAll()用户不能访问
.fullyAuthenticated()//用户完全认证可以访问(非remember-me下自动登录)
.hasAnyAuthority(String…)//如果有参数,参数表实权限,则其中任何一个权限可以访问
.hasAnyRole(String…)//如果有参数,参数表示角色,则其中任何一个角色可以访问
.hasAuthority(String…)//如果有参数,参数表实权限,则其权限可以访问
.hasIpAddress(String)//如果有参数,参数表实IP地址,如果用户IP和参数匹配,则可以访问
.hasRole(String)//如果有参数,参数表示角色,则其角色可以访问
.permitAll()//用户可以任意访问
.rememberMe()//允许通过remember-me登录的用户访问
.authenticated()//用户登录后可访问

授权示例
@OVerride
protected void configure(HttpSecurity http) throws Exception{
	http.authorizeRequests()
	.antMatchers("user/userLogin").permitAll()
	.antMatchers("home").permitAll()
	.antMatchers("admin/adminLogin").hasRole("Admin")
	.anyRequest().authenticated();
	//设置登录页面
	.and()
	.formLogin()
	.loginPage("/login")
	.usernameParameter("userName").passwordParameter("password")
	//失败跳转页面
	.failureUrl("login?error")
	.and()
	//注销操作
	.loginout().permitAll()
	.and()
	//指定异常处理页面
	.exceptionHandling().accessDeniedPage("/accessDenied");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值