其他分享
首页 > 其他分享> > spring-security

spring-security

作者:互联网

参考教程地址

认证过程

  1. 用户使用账号密码登陆
  2. springsecurity将接收到的登陆信息封装成实现了Authentication 接口的UsernamePasswordAuthenticationToken
  3. 将产生的token对象传给AuthenticationManager进行登陆认证
  4. AuthenticationManager认证成功后,会返回一个封装了用户权限信息的Authentication对象
  5. 通过调用 SecurityContextHolder.getContext().setAuthentication(…) 将 AuthenticationManager 返回的 Authentication 对象赋予给当前的 SecurityContext

验证流程

与springboot集

指定拦截的url

@PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_SELECT','ROLES_ALL','USER_ALL','USER_SELECT')")

方法级安全使用诸如@PreAuthorize、@PostAuthorize 、@ Secured 注解来实现。

要想使 @PreAuthorize 注解生效,需要继承 WebSecurityConfigurerAdapter 配置类上添加 @EnableGlobalMethodSecurity注解部分代码如下

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

上面的 prePostEnabled :确定 Spring Security 前置注释 [@PreAuthorize,@PostAuthorize,..] 是否应该启用

认证处理机制

maven引用

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

security配置

继承WebSecurityConfigurerAdapter,然后重写两个configur

   public void configure(WebSecurity web) throws Exception {
    }
   protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .anyRequest().authenticated()
                .and()
            .formLogin().and()
            .httpBasic();
    }

数据库表结构设计

用户角色权限相关表

字段名字段类型非空注释
idbigint(20)ID
avatarvarchar头像链接
create_timedatetime创建时间
emailvarchar邮箱
enabledbigint是否启用
usernamevarchar用户名
passworvarchar密码
last_password_reset_timedatetime最后修改密码时间
字段名 字段类型 非空 注释
user_idbigint(20)用户ID
role_id bigint(20)角色ID
字段名 字段类型 非空 注释
idbigint角色id
create_timedatetime创建时间
namevarchar角色名称
remarkvarchar备注
字段名 字段类型 非空 注释
role_idbigint角色ID
permission_idbigint权限ID
字段名 字段类型 非空 注释
idbigint
aliasvarchar别名
create_timedatetime创建时间
namevarchar名称
pidint上级权限

菜单设计与展

字段名 字段名类型是否非空备注
idbigint
create_timedatetime 创建日期
namevarchar菜单名称
componentvarchar组件
pidbigint上级菜单ID
sortbigint排序
iconvarchar图标
pathvarchar链接地址
i_framebit是否外链
menu表 查询结果示例

标签:非空,角色,PreAuthorize,spring,idbigint,timedatetime,security,字段名
来源: https://www.cnblogs.com/falcon-fei/p/11060065.html