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

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

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

瀏覽:123日期: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久久,三上悠亚国产精品一区二区三区
99国产精品私拍| 亚洲欧美日韩精品一区二区| 五月国产精品| 视频一区视频二区中文| 日韩在线视频精品| 国产一区国产二区国产三区| 欧美黄色一区二区| 国产精品17p| 久久三级中文| 国产+成+人+亚洲欧洲在线| 成人免费一区| 日韩欧美1区| 国产99精品| 日韩亚洲国产欧美| 久热综合在线亚洲精品| 中文字幕成人| 日韩中文视频| 午夜精品网站| 日产欧产美韩系列久久99| 7777精品| 精品三级久久久| 另类欧美日韩国产在线| 免费观看亚洲| 99国内精品| 日本不卡一区二区三区| 国产美女久久| 国产91在线播放精品| 亚洲天堂免费电影| 在线国产一区| 午夜性色一区二区三区免费视频| 国产欧美视频在线| caoporn视频在线| 欧美精品一二| 综合亚洲自拍| 国产欧美亚洲精品a| 电影91久久久| 悠悠资源网久久精品| 日本不卡一二三区黄网| 麻豆国产精品777777在线| 久久久久久久久久久9不雅视频| 妖精视频成人观看www| 欧美精品影院| 久久三级视频| 日韩在线成人| 国产欧美一区二区三区精品酒店| 午夜国产精品视频免费体验区| 日韩有吗在线观看| 青青青免费在线视频| 蜜桃久久av| 国产一区二区三区四区| 99亚洲精品| 另类综合日韩欧美亚洲| 好看不卡的中文字幕| 国产精品一线天粉嫩av| 欧美日韩一区二区综合 | 免费在线亚洲| 韩国精品主播一区二区在线观看| 免费成人性网站| 国产成人精选| 综合激情婷婷| 日本美女一区| 日韩欧美高清一区二区三区| 欧洲在线一区| 天堂俺去俺来也www久久婷婷| 国产aⅴ精品一区二区四区| 亚洲深深色噜噜狠狠爱网站| 在线天堂中文资源最新版| 天堂av一区| 午夜日韩福利| 久久97视频| 日韩在线黄色| 欧美在线网站| 国产成人久久精品麻豆二区 | 中文日韩在线| 国产videos久久| 亚洲精品影院在线观看| 日韩国产欧美| 日本国产欧美| 蜜桃成人av| 国产+成+人+亚洲欧洲在线| 日韩av午夜在线观看| 国产精品三上| 久久伦理在线| 亚洲伊人影院| 亚洲女同一区| 色吊丝一区二区| 精品三级在线观看视频| 清纯唯美亚洲综合一区| 欧美专区一区二区三区| 日韩精品影视| 国产aa精品| 国产福利一区二区精品秒拍| 丝袜国产日韩另类美女| 99免费精品| 久久只有精品| 久久精品99国产精品日本| 三级欧美在线一区| 亚洲午夜电影| 精品丝袜在线| 水蜜桃精品av一区二区| 国产精品videossex| 久久亚洲色图| 黄色日韩在线| 一区二区小说| 日韩av首页| av日韩中文| 四季av一区二区凹凸精品| 国产精品一卡| 欧美视频二区| 国产日韩一区| 蜜桃传媒麻豆第一区在线观看 | 久久精品97| 日韩精品亚洲专区| 日韩中文字幕无砖| 国产精品极品国产中出| 欧美天堂一区二区| 91麻豆精品激情在线观看最新 | 香蕉久久99| 99久久精品网| 久久久久久久久99精品大| 日韩久久电影| 天堂√中文最新版在线| 天堂8中文在线最新版在线| 成人片免费看| 久久91导航| 99免费精品| 日韩午夜在线| 中文在线日韩| 日韩手机在线| 青草av.久久免费一区| 69堂精品视频在线播放| 欧美日韩18| 久久gogo国模啪啪裸体| 精品国内亚洲2022精品成人| 精品久久久网| 一本大道色婷婷在线| 亚洲调教视频在线观看| 一区二区亚洲精品| 亚洲综合三区| 中文字幕av亚洲精品一部二部| 日韩福利视频导航| www.九色在线| 国产专区一区| 9久re热视频在线精品| 亚洲深深色噜噜狠狠爱网站 | 久久久久久一区二区| 久久影院资源站| 免费高潮视频95在线观看网站| 99久久亚洲精品| 日本 国产 欧美色综合| 日本精品一区二区三区在线观看视频| 国产九九精品| 国产成人77亚洲精品www| 久久国产欧美| 视频一区国产视频| 国产伦理一区| 久久电影tv| 亚洲精品97| 欧美一级网址| 成人国产精选| 精品1区2区3区4区| 97成人在线| www在线观看黄色| 午夜久久免费观看| 综合激情在线| 国产成人久久| 国产亚洲一级| 国产午夜久久av| 日韩中文影院| 亚洲丝袜啪啪| 国产成人免费精品| 日本大胆欧美人术艺术动态| 久久av电影| 欧美精选一区二区三区| 亚州av日韩av| 成人啊v在线| **爰片久久毛片| 99视频精品全国免费| 欧美欧美黄在线二区| 色老板在线视频一区二区| 日本欧美一区二区| 日韩啪啪电影网| 亚洲精品成人一区| 丝袜国产日韩另类美女| 国产一区二区三区精品在线观看| 在线一区视频| 国产精品久久观看| 日韩中文欧美在线| 国产一区二区三区不卡视频网站 | 91嫩草亚洲精品| 久热精品在线| 国产精选在线| 日韩精品a在线观看91| 不卡福利视频| 国产亚洲一区| 亚洲欧美日韩国产一区| 精品成av人一区二区三区 | 日本欧美在线| re久久精品视频| 精品中国亚洲|