SpringSecurity实现用户认证授权系统

本文同步发布在是与非博客(www.zhuoerhuobi.cn)

随着是与非博客基础功能的完善,给我的网站加上用户认证授权系统这件事终于是提上日程了。

用户系统我们可以拆解为登录认证和授权访问这两个功能。我们先登陆账号,用户的状态就存在在网站了,然后网站再根据该用户的角色权限授权该用户访问某些页面和接口。

如果我们自己动手实现用户系统,可以料想到大致流程为:
读取用户输入的账户密码 --> 加密后和数据库中的用户表进行比对 --> 若比对成功,则读取数据库中用户的信息,登陆成功 --> 在我们已有的接口或页面上添加判断条件或拦截器,根据用户信息中的角色或者权限等字段判断是否让用户通行。

这么做的缺点也很明显,工作量大,并且认证系统和我们的业务代码高度耦合,不利于后期维护。

在这种情况下,用户系统相关框架应运而生,当下最流行的shrio和springsecurity都能很好的完成我们上面的需求,并且它们遵循了aop原则,并不需要更改我们的业务代码就可以加入用户系统功能,相当方便。

要引入springsecurity功能,我们首先要在pom文件中添加依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-security</artifactId>
</dependency>

这样,项目就引入了security模块。security默认拦截所有请求,而默认登录用户名为user,默认密码在服务启动时会打印在终端下。

security相关配置继承自WebSecurityConfigurerAdapter类,所以我们定义自己的MySecurityConfig类继承WebSecurityConfigurerAdapter,并重写其中几个方法。


@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true, jsr250Enabled = true)
public class MySecurityConfig extends WebSecurityConfigurerAdapter {
   
    @Autowired
    MyUserDetailService myUserDetailService;

    @Override
    public void configure(WebSecurity web) throws Exception {
   
		//不拦截静态资源
        web.ignoring().antMatchers("/css/**","/js/**","/fonts/**","/lib/**","/img/**");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
   
        http.csrf().disable();/*关闭防御csrf攻击功能*/
		//链式编程,可以连写若干个功能,为了方便理解,我们还是拆开来写。
        http.formLogin() /*开启表单登录*/
            .loginPage("/login")/*自定义我们自己的登陆页面*/
            .defaultSuccessUrl("/index?page=1").permitAll()/*自定义登录成功页面*/
            .and().authorizeRequests()
            .antMatchers("/login","/resources/**").permitAll()/*选择哪些页面不需要权限*/
            .antMatchers("/admin/**").hasRole(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值