日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring Security基于數據庫實現認證過程解析

瀏覽:120日期:2023-08-21 08:16:58

創建數據庫

SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for role-- ----------------------------DROP TABLE IF EXISTS `role`;CREATE TABLE `role` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(32) DEFAULT NULL,`nameZh` varchar(32) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;-- ------------------------------ Records of role-- ----------------------------INSERT INTO `role` VALUES (’1’, ’dba’, ’數據庫管理員’);INSERT INTO `role` VALUES (’2’, ’admin’, ’系統管理員’);INSERT INTO `role` VALUES (’3’, ’user’, ’用戶’);-- ------------------------------ Table structure for user-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(32) DEFAULT NULL,`password` varchar(255) DEFAULT NULL,`enabled` tinyint(1) DEFAULT NULL,`locked` tinyint(1) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES (’1’, ’root’, ’$2a$10$RMuFXGQ5AtH4wOvkUqyvuecpqUSeoxZYqilXzbz50dceRsga.WYiq’, ’1’, ’0’);INSERT INTO `user` VALUES (’2’, ’admin’, ’$2a$10$RMuFXGQ5AtH4wOvkUqyvuecpqUSeoxZYqilXzbz50dceRsga.WYiq’, ’1’, ’0’);INSERT INTO `user` VALUES (’3’, ’sang’, ’$2a$10$RMuFXGQ5AtH4wOvkUqyvuecpqUSeoxZYqilXzbz50dceRsga.WYiq’, ’1’, ’0’);-- ------------------------------ Table structure for user_role-- ----------------------------DROP TABLE IF EXISTS `user_role`;CREATE TABLE `user_role` (`id` int(11) NOT NULL AUTO_INCREMENT,`uid` int(11) DEFAULT NULL,`rid` int(11) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;-- ------------------------------ Records of user_role-- ----------------------------INSERT INTO `user_role` VALUES (’1’, ’1’, ’1’);INSERT INTO `user_role` VALUES (’2’, ’1’, ’2’);INSERT INTO `user_role` VALUES (’3’, ’2’, ’2’);INSERT INTO `user_role` VALUES (’4’, ’3’, ’3’);SET FOREIGN_KEY_CHECKS=1;

導入依賴

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version></dependency><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> <version>5.1.46</version></dependency><dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.22</version></dependency>

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/javaboy?useUnicode=true&characterEncoding=utf8spring.datasource.username=rootspring.datasource.password=rootspring.datasource.type=com.alibaba.druid.pool.DruidDataSource

讓bean實現UserDetails接口

public class User implements UserDetails { private Integer id; private String username; private String password; private Boolean enabled; private Boolean locked; private List<Role> roles; public List<Role> getRoles() { return roles; } public void setRoles(List<Role> roles) { this.roles = roles; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } public void setEnabled(Boolean enabled) { this.enabled = enabled; } public void setLocked(Boolean locked) { this.locked = locked; } @Override public Collection<? extends GrantedAuthority> getAuthorities() { List<SimpleGrantedAuthority> authorities = new ArrayList<>(); for (Role role : roles) { authorities.add(new SimpleGrantedAuthority('ROLE_' + role.getName())); } return authorities; } @Override public String getPassword() { return password; } public String getUsername() { return username; } //賬戶是否未過期 @Override public boolean isAccountNonExpired() { return true; } //賬戶是否未鎖定 @Override public boolean isAccountNonLocked() { return !locked; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return enabled; }}

public class Role { private Integer id; private String name; private String nameZh;...}

userMapper

在類上直接加@Mapper或者在SpringBoot啟動類上配置全局的掃描@MapperScan(basePackages='')

@Mapperpublic interface UserMapper { User loadUserByUsername(String username); List<Role> getUserRolesById(Integer id);}

<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd'><mapper namespace='com.qwl.mysecuritydb.mapper.UserMapper'> <select resultType='com.qwl.mysecuritydb.bean.User'> select * from user where username = #{username} </select> <select resultType='com.qwl.mysecuritydb.bean.Role'> select * from role where id in(select rid from user_role where uid=#{id}) </select></mapper>

userService 同樣也要繼承UserServiceDetails接口

@Servicepublic class UserService implements UserDetailsService { @Autowired UserMapper userMapper; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { User user =userMapper.loadUserByUsername(username); if(user==null){ throw new UsernameNotFoundException('用戶不存在'); } user.setRoles(userMapper.getUserRolesById(user.getId())); return user; }}

HelloController

@RestControllerpublic class HelloController { @GetMapping('/hello') public String hello(){ return 'hello security'; } @GetMapping('/dba/hello') public String dba(){ return 'hello dba'; } @GetMapping('/admin/hello') public String admin(){ return 'hello admin'; } @GetMapping('/user/hello') public String user(){ return 'hello user'; }}

SecurityConfig

SercurityConfig需要繼承WebSecurityConfigurerAdapter類,并在類上加@Configuration SpringSecurity5.0之后密碼必須加密 把數據庫查出的用戶信息交給SpringSecurity處理 配置httpSercurity

@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired UserService userService;//把數據庫查出的用戶信息交給SpringSecurity處理 @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userService); } @Bean PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); } @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers('/dba/**').hasRole('dba').antMatchers('/admin/**').hasRole('admin').antMatchers('/user/**').hasRole('user').anyRequest().authenticated().and().formLogin().permitAll().and().csrf().disable(); }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
一级欧美视频| 男人天堂欧美日韩| 日本蜜桃在线观看视频| av一区在线| 欧美综合二区| 国产精品网站在线看| 欧美日韩国产观看视频| 狠狠色狠狠色综合日日tαg| 亚洲伊人精品酒店| 国产精品久久乐| 成人高清一区| 9色国产精品| 日韩高清不卡在线| 麻豆高清免费国产一区| 欧美手机在线| 亚洲欧美日韩视频二区| 国产精品亚洲综合在线观看| 夜鲁夜鲁夜鲁视频在线播放| 日韩中文字幕区一区有砖一区 | 国产精品美女| 国产精品一区二区av日韩在线| 99tv成人| 亚洲精品第一| 日韩国产专区| 亚洲精品三级| 欧洲av不卡| 日韩中文字幕| аⅴ资源天堂资源库在线| 蜜臀精品久久久久久蜜臀| 精品理论电影在线| 日韩影院免费视频| 首页国产精品| 亚洲精品观看| 日韩高清不卡| 国产精品一国产精品| 日韩视频一区| 国产成人久久精品麻豆二区| 午夜国产欧美理论在线播放 | 成人看片网站| 欧美日韩午夜| 欧美精品自拍| 精品三级国产| 亚洲免费观看高清完整版在线观| 五月综合激情| 国产成人久久精品麻豆二区| 亚洲日韩视频| 神马日本精品| 欧美激情视频一区二区三区免费| 日韩视频二区| 亚洲精品系列| 亚洲成人三区| 亚洲黄色中文字幕| 国产精品入口久久| 中文字幕一区二区三区四区久久| 久久要要av| 国产精品大片免费观看| 免费成人在线影院| 久久精品免费一区二区三区| 国产精品一区二区三区四区在线观看| 亚洲一区二区毛片| 九九色在线视频| 欧美aaaaaa午夜精品| 蜜桃视频在线观看一区二区| 国内亚洲精品| 国产一区二区精品福利地址| 国产香蕉精品| 少妇精品久久久| 国产亚洲永久域名| 日韩精品水蜜桃| 国产一区二区三区网| 久久国产麻豆精品| 四虎国产精品免费久久| 丝袜亚洲另类欧美| 一区久久精品| 亚洲小说欧美另类婷婷| 日韩美女一区二区三区在线观看| 久久精品日韩欧美| 国产精品天天看天天狠| 视频国产精品| 丝袜美腿亚洲色图| 国产精品日韩久久久| 欧美日韩国产高清电影| 久久黄色影院| 亚洲欧美日韩视频二区| 日韩视频在线一区二区三区| 91成人精品| 免费视频亚洲| 久久久久午夜电影| 国产视频一区二区在线播放| 国产模特精品视频久久久久| 三上亚洲一区二区| av资源中文在线天堂| 国产极品一区| 国产精品一区二区三区www | 不卡一区2区| 欧美日韩中文字幕一区二区三区| 国产高潮在线| 91嫩草亚洲精品| 动漫av一区| caoporn视频在线| 国产在线观看www| 国产欧洲在线| 91精品精品| 欧美va天堂在线| 欧美日韩高清| 男人操女人的视频在线观看欧美| 日韩精品一二区| 日韩欧美在线精品| 亚洲视频国产精品| 亚州欧美在线| 国产欧美日韩一级| 久久99精品久久久野外观看| 久久精品国产一区二区| 国产 日韩 欧美 综合 一区| 美女av在线免费看| 久久亚洲国产| 首页亚洲欧美制服丝腿| 亚洲综合激情在线| 国产欧美一区二区色老头| 精品午夜av| 999国产精品999久久久久久| 影院欧美亚洲| 国产精品毛片一区二区三区| 欧产日产国产精品视频| 国产韩日影视精品| 亚洲免费网址| 日韩国产高清在线| 狂野欧美性猛交xxxx| 久久男人av资源站| 亚洲激情另类| 日韩精品91亚洲二区在线观看| 国产欧美一区二区色老头| 91嫩草亚洲精品| 亚洲免费高清| 国产亚洲精aa在线看| www.九色在线| 免费久久99精品国产自在现线| 日韩精品导航| 美女视频免费精品| 亚洲成人精品| 日韩一区二区三免费高清在线观看 | 日韩一区精品字幕| 91p九色成人| 丁香婷婷久久| 不卡一区2区| 91精品麻豆| 激情国产在线| 玖玖精品视频| 久久精品国产福利| 欧美.日韩.国产.一区.二区 | 日韩一区电影| 亚洲人妖在线| 国产精品高颜值在线观看| 日韩午夜黄色| 久久精品免视看国产成人| 国内激情久久| 91欧美日韩在线| 亚洲精品.com| 国产欧美一区二区三区国产幕精品| av亚洲一区二区三区| 日韩在线观看中文字幕| 午夜久久中文| 日韩激情中文字幕| 欧洲av不卡| 麻豆久久精品| 国产视频网站一区二区三区| 蜜臀精品久久久久久蜜臀| 国产中文字幕一区二区三区| 红桃视频国产精品| 精品国产亚洲一区二区三区在线| 一级欧洲+日本+国产| 久久久久久久久成人| 丝袜美腿亚洲色图| 中文在线а√在线8| 日韩精品一区二区三区免费视频| 国产成人免费av一区二区午夜| 首页国产欧美久久| 婷婷综合六月| 国产精品一国产精品| 亚洲欧美日韩在线观看a三区| 精品国产一区二| 亚洲精品美女91| 久久精品国产大片免费观看| 国产福利一区二区精品秒拍| 亚洲欧美日韩国产一区二区| 日韩欧美精品一区| 国产精品mv在线观看| 免费看欧美美女黄的网站| 日产精品一区| 国产激情久久| 亚洲一区二区三区四区电影| 日韩一区自拍| 国产精品扒开腿做爽爽爽软件| 免费成人性网站| 国产一区久久| 韩日一区二区| 国产伦乱精品| 亚洲精品亚洲人成在线观看| 女人天堂亚洲aⅴ在线观看| 91综合网人人|