web权限方法自动登录
1.构建表
create table `persistent_logins`(
`username` VARCHAR(64) not null,
`series` VARCHAR(64) not null,
`token` VARCHAR(64) not null,
`last_used` timestamp not null default current_timestamp on update current_timestamp,
PRIMARY key(`series`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;2.配置类,注入数据源,配置操作数据库对象
//注入数据源 @Autowired private DataSource dataSource; //配置对象 @Bean public PersistentTokenRepository persistentTokenRepository(){ JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl(); // 设置数据源 jdbcTokenRepository.setDataSource(dataSource); //jdbcTokenRepository.setCreateTableOnStartup(true); 启动时将表创建 return jdbcTokenRepository; }3.配置类配置自动登录
.and().rememberMe().tokenRepository(persistentTokenRepository()) .tokenValiditySeconds(60) //设置有效时长,单位秒 .userDetailsService(userDetailsService)4.复选框添加
<input type="checkbox" name="remember-me"/>自动登录
Token存入浏览器中,并存入数据库,下次登录直接进行比对
CSRF理解
跨站请求伪造:同一浏览器的不同网站,一个网站认证登陆后,另一个网站会伪造一些信息,这是不安全的。
//关闭csrf保护功能(默认开启) http.csrf().disable();
SpringSecurity微服务权限方案
微服务
微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中。(独立部署、独立运行、独立升级)
微服务认证和授权实现过程
1.单点登录(SSO)
单一模块登录后,其他模块不用再次进行登录。
2.授权
不用角色拥有不同模块的访问权限
基于SpringSecurity认证授权案例
微服务权限管理案例设计表:
1.菜单表
2.角色表
3.用户表
菜单表 1 作品管理 2 作者管理
角色表 1 管理员 2 普通用户
用户表 1 北城南迁 2 南鹿先生
角色菜单关系表 uid rid 1 1
用户角色关系表 cid rid 1 1 4.角色菜单关系表
5.用户角色关系表
微服务权限管理案例主要功能:
1.登录(认证)
2.添加角色
3.为角色分配菜单
4.添加用户
5.为用户添加角色(权限)