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

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

spring boot整合scurity做簡單的登錄校驗的實現

瀏覽:27日期:2023-05-24 11:44:53

開發環境:springboot

maven引入:

<dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId> <version>2.2.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-jwt</artifactId> <version>1.0.10.RELEASE</version> </dependency>

1、先在數據庫創建用戶表,用戶名為username,密碼名為password。下面是我用戶表的實體

private Integer id;/*** 昵稱*/private String name;/*** 職位*/private String code;/*** 密碼*/private String passwd;/*** 用戶名*/private String username;/*** 手機號*/private String phone;/*** 創建時間*/private Date createdTime;

2、看項目是JPA、還是mybatis。我這邊項目使用的是mybatis。需要有一個方法通過用戶名獲取用戶信息。

3、創建一個用戶驗證類實現 UserDetails 繼承用戶實體

public class SecurityUser extends SysUser implements UserDetails {private static final long serialVersiongUID = 1l;public SecurityUser(SysUser sysUser) { if (null != sysUser) { this.setCode(sysUser.getCode()); this.setCreatedTime(sysUser.getCreatedTime()); this.setId(sysUser.getId()); this.setName(sysUser.getName()); this.setPasswd(sysUser.getPasswd()); this.setPhone(sysUser.getPhone()); this.setUsername(sysUser.getUsername()); }}@Overridepublic Collection<? extends GrantedAuthority> getAuthorities() { Collection<GrantedAuthority> authorities = new ArrayList<>(); String username = this.getUsername(); if (username != null) { SimpleGrantedAuthority authority = new SimpleGrantedAuthority(username); authorities.add(authority); } return authorities;}@Overridepublic String getPassword() { return super.getPasswd();}//賬戶是否未過期,過期無法驗證@Overridepublic boolean isAccountNonExpired() { return true;}//指定用戶是否解鎖,鎖定的用戶無法進行身份驗證@Overridepublic boolean isAccountNonLocked() { return true;}//指示是否已過期的用戶的憑據(密碼),過期的憑據防止認證@Overridepublic boolean isCredentialsNonExpired() { return true;}//是否可用 ,禁用的用戶不能身份驗證@Overridepublic boolean isEnabled() { return true;}}

4、重點!創建一個scurity config配置類

@Configuration @EnableWebSecurity public class UiSecurityConfig extends WebSecurityConfigurerAdapter { private static final Logger logger = LoggerFactory.getLogger(UiSecurityConfig.class); @Override protected void configure(HttpSecurity http) throws Exception { //配置策略 http.csrf().disable(); http.authorizeRequests(). antMatchers('/static/**').permitAll().anyRequest().authenticated(). and().formLogin().loginPage('/login').permitAll().successHandler(loginSuccessHandler()). and().logout().permitAll().invalidateHttpSession(true). deleteCookies('JSESSIONID').logoutSuccessHandler(logoutSuccessHandler()). and().sessionManagement().maximumSessions(10).expiredUrl('/login'); } @Bean public BCryptPasswordEncoder passwordEncoder() { //密碼加密 return new BCryptPasswordEncoder(4); } @Bean public LogoutSuccessHandler logoutSuccessHandler() { //登出處理 return new LogoutSuccessHandler() { @Override public void onLogoutSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException { try { SecurityUser user = (SecurityUser) authentication.getPrincipal(); logger.info('USER : ' + user.getUsername() + ' LOGOUT SUCCESS ! '); } catch (Exception e) { logger.info('LOGOUT EXCEPTION , e : ' + e.getMessage()); } httpServletResponse.sendRedirect('/login'); } }; } @Bean public SavedRequestAwareAuthenticationSuccessHandler loginSuccessHandler() { //登入處理 return new SavedRequestAwareAuthenticationSuccessHandler() { @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { SysUser userDetails = (SysUser) authentication.getPrincipal(); logger.info('USER : ' + userDetails.getUsername() + ' LOGIN SUCCESS ! '); //登錄成功后重定向路徑 response.sendRedirect('/'); } }; } //用戶登錄實現 @Bean public UserDetailsService userDetailsService() { return new UserDetailsService() { @Autowired private SysUserDao sysUserDao;//這里是引入數據庫連接dao @Override public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { SysUser userNmae = new SysUser(); userNmae.setUsername(s); List<SysUser> listUser = sysUserDao.queryAll(userNmae);//通過用戶名獲取個用戶信息 SysUser user = null; if (listUser.size() > 0) {user = listUser.get(0); } if (user == null) throw new UsernameNotFoundException('Username ' + s + ' not found'); return new SecurityUser(user); } }; }}

5、基礎工作準備完成開始寫controller

@Controllerpublic class LoginController { @Resourceprivate SessionTool sessionTool;// 獲取登錄頁面@RequestMapping(value = '/login', method = RequestMethod.GET)public String login() { return 'login';}@RequestMapping('/')public String login(ModelMap map){ SysUser sysUser = sessionTool.getUser(); map.addAttribute('sysUser', sysUser); return 'index';}}

6、從session獲取用戶信息

@Componentpublic class SessionTool {public SysUser getUser() { //為了session從獲取用戶信息,可以配置如下 SysUser user = new SysUser(); SecurityContext ctx = SecurityContextHolder.getContext(); Authentication auth = ctx.getAuthentication(); if (auth.getPrincipal() instanceof UserDetails) user = (SysUser) auth.getPrincipal(); return user;}public HttpServletRequest getRequest() { return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();}}

7、login.html頁面(登錄路徑為login 請求方式為post,scurity自帶的登錄路徑)

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title></head><body><form action='/login' method='post'> 用戶名 : <input type='text' name='username'/> 密碼 : <input type='password' name='password'/> <input type='submit' value='登錄'></form></body></html>

總結一下思路:

引入依賴包-》創建用戶表-》創建用戶表數據庫查詢接口-》創建用戶校驗類實現UserDetails接口-》創建scurity配置類繼承 WebSecurityConfigurerAdapter 方法configure為配置校驗策略-》創建controller配置登錄頁面跳轉接口-》創建登陸頁面用戶名必須為username 密碼為password 登錄路徑為’/login’ 請求方式為post

由于scurity配置的密碼檢驗是加密的為了測試可以在Test模塊中獲取加密后的密碼然后存到用戶表的password字段中。

@Test public void encoder() { String password = '123123'; BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(4); String enPassword = encoder.encode(password); System.out.println(enPassword); }

到此這篇關于spring boot整合scurity做簡單的登錄校驗的實現的文章就介紹到這了,更多相關springboot scurity登錄校驗內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩在线欧美| 日韩专区视频网站| 国产成人黄色| 中文字幕亚洲在线观看| 日韩深夜视频| 日本va欧美va欧美va精品| 亚洲一区激情| 日韩在线看片| 欧美成人基地| 色在线中文字幕| 国产精品嫩草影院在线看| 免费人成在线不卡| 久久精品国产久精国产| 国产亚洲高清在线观看| 亚洲日本久久| 国产毛片久久| 中文在线中文资源| 日本午夜大片a在线观看| 91亚洲精品在看在线观看高清| 亚洲精品一区二区在线播放∴| 激情欧美一区| 神马日本精品| 美女亚洲一区| 亚洲一区区二区| 日韩伦理福利| 久久婷婷久久| 久久精品国产68国产精品亚洲| 国产精品久久久久久久久免费高清| 欧美日中文字幕| 日韩和欧美一区二区三区| 久久国产精品毛片| 欧美不卡高清| 亚洲主播在线| 免费一区二区视频| 免费视频久久| 久久都是精品| 青青国产91久久久久久| 国产一区2区| 成人va天堂| 亚洲黄色中文字幕| 亚洲大片在线| 美日韩精品视频| 老司机久久99久久精品播放免费| 伊人久久亚洲热| 欧美中文一区| 樱桃视频成人在线观看| 国内激情久久| 国产精品网址| 国产aⅴ精品一区二区四区| 四虎成人av| 伊人久久成人| 久久国产尿小便嘘嘘| 里番精品3d一二三区| 欧美天堂亚洲电影院在线观看| 亚洲婷婷在线| 久久成人av| 美女精品一区| 麻豆国产欧美一区二区三区| 日韩不卡在线| 日韩一区二区三免费高清在线观看| 欧美一区成人| 天堂av在线| 国产精品一区二区三区美女| 激情综合在线| 国产乱码精品一区二区三区四区 | 欧美日韩中文一区二区| 亚洲精品一级二级| 国产美女亚洲精品7777| 午夜欧美理论片| 国产精选在线| 欧美一区精品| 美国三级日本三级久久99| 欧美羞羞视频| 国产精品欧美三级在线观看 | 激情婷婷亚洲| 国产精品66| 欧美精品九九| 国模精品一区| 久久久久亚洲精品中文字幕| 啪啪亚洲精品| 日本午夜精品久久久| 亚洲精品91| 久久婷婷亚洲| 欧美日韩一区二区三区视频播放| 国产中文在线播放| 国产精品久久久久久模特 | 日本黄色精品| 欧美激情视频一区二区三区免费 | 日韩avvvv在线播放| 久久久久国产| 成人日韩精品| 天堂中文av在线资源库| 欧美亚洲二区| 免费在线观看视频一区| 久久中文亚洲字幕| 人人精品人人爱| 中文精品电影| 欧美日韩一视频区二区| 国产精品蜜月aⅴ在线| 欧美一级一区| 久久只有精品| 激情自拍一区| 国产视频网站一区二区三区| 久久香蕉网站| 麻豆mv在线观看| 国产一区欧美| 欧美综合另类| 久久国产精品免费一区二区三区 | 欧美成人综合| 好看的av在线不卡观看| 亚州欧美在线| 国产亚洲一区| 国产一区福利| 日韩欧美中文字幕电影| 黑森林国产精品av| 青青国产精品| 水野朝阳av一区二区三区| 99久精品视频在线观看视频| 国产日韩亚洲欧美精品| 欧美精品自拍| 高潮一区二区| 老司机免费视频一区二区| 久久亚洲国产精品尤物| 精品久久久网| 美美哒免费高清在线观看视频一区二区 | 国产欧美一区二区三区精品观看| 成人羞羞在线观看网站| 91精品福利| 亚洲综合色婷婷在线观看| 国产精品网在线观看| 一区二区三区四区日本视频| 97久久超碰| 久久亚洲成人| 国产剧情一区| 亚洲精品在线影院| 亚洲精品乱码| 九九精品调教| 久久国产三级| 1000部精品久久久久久久久| 日韩超碰人人爽人人做人人添| 久久精品主播| 精品一区视频| 国产日产精品_国产精品毛片 | 欧洲一区二区三区精品| 日韩在线免费| 国产精品自在| 日韩中文字幕高清在线观看| 欧美亚洲tv| 亚洲免费婷婷| 久久三级视频| 狠狠久久伊人中文字幕| 免费成人在线视频观看| 色婷婷精品视频| 国产三级一区| 日本a级不卡| 精品免费av一区二区三区| 最新国产精品久久久| 婷婷激情久久| 激情自拍一区| 丰满少妇一区| 精品国产91| 另类欧美日韩国产在线| 亚洲精品一级| 日韩av中文字幕一区二区| 日韩精品成人在线观看| 亚洲精品日韩久久| 日韩精品三区四区| 欧美日韩黄网站| 欧美在线91| 久久激情综合网| 久久丁香四色| 电影91久久久| 久久久久.com| 伊人影院久久| 精品久久久久中文字幕小说| 久久精品系列| 久久久人人人| 免费国产亚洲视频| 久久中文在线| 亚洲国产专区| 日韩二区三区在线观看| 亚洲三级在线| 精品免费视频| av一区二区高清| 日韩高清在线观看一区二区| 美女免费视频一区| 亚洲性色视频| 日本久久二区| 精品国产亚洲一区二区三区在线| 国产精品久久久久久久久久10秀| 麻豆一区二区三| 亚洲免费高清| 精品国内亚洲2022精品成人| 欧美亚洲国产一区| 国产伦乱精品| 激情亚洲影院在线观看| 亚洲毛片视频| 国际精品欧美精品| 亚洲va久久久噜噜噜久久| 极品av在线|