日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

[SpringSecurity]web权限方案_用户授权_基于权限访问控制_基于角色访问控制_hasAuthority和hasAnyAuthority_hasRole和hasAnyRole

發布時間:2023/12/4 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [SpringSecurity]web权限方案_用户授权_基于权限访问控制_基于角色访问控制_hasAuthority和hasAnyAuthority_hasRole和hasAnyRole 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基于角色或權限進行訪問控制

hasAuthority 方法

如果當前的主體具有指定的權限,則返回 true,否則返回 false

在配置類設置當前訪問地址有哪些

@Overrideprotected void configure(HttpSecurity http) throws Exception {http.formLogin() //自定義自己編寫的登陸頁面.loginPage("/login.html") //登陸頁面設置.loginProcessingUrl("/user/login") //登陸訪問路徑.defaultSuccessUrl("/test/index").permitAll() //登陸成功之后,跳轉路徑.and().authorizeRequests().antMatchers("/","/test/hello","/user/login").permitAll() //設置哪些路徑可以直接訪問,不需要認證//當前登陸用戶,只有具有admin權限才可以訪問這個路徑.antMatchers("/test/index").hasAuthority("admins").anyRequest().authenticated().and().csrf().disable(); //關閉csrf防護}

在UserDetailsService,把返回User對象設置權限

@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {//調用userMapper方法,根據用戶名查詢數據庫QueryWrapper<Users> wrapper = new QueryWrapper<>();//where username = ?wrapper.eq("username",username);Users users = usersMapper.selectOne(wrapper);//判斷if (users==null)//數據庫沒有用戶名,認證失敗{throw new UsernameNotFoundException("用戶名不存在!");}List<GrantedAuthority> auths = AuthorityUtils.commaSeparatedStringToAuthorityList("admins");return new User(users.getUsername(),new BCryptPasswordEncoder().encode(users.getPassword()),auths);}

測試


沒有訪問權限 403



hasAnyAuthority 方法

如果當前的主體有任何提供的“角色”的話,返回true.

@Overrideprotected void configure(HttpSecurity http) throws Exception {http.formLogin() //自定義自己編寫的登陸頁面.loginPage("/login.html") //登陸頁面設置.loginProcessingUrl("/user/login") //登陸訪問路徑.defaultSuccessUrl("/test/index").permitAll() //登陸成功之后,跳轉路徑.and().authorizeRequests().antMatchers("/","/test/hello","/user/login").permitAll() //設置哪些路徑可以直接訪問,不需要認證 // //當前登陸用戶,只有具有admin權限才可以訪問這個路徑 // .antMatchers("/test/index").hasAuthority("admins").antMatchers("/test/index").hasAnyAuthority("admins”,“manager").anyRequest().authenticated().and().csrf().disable(); //關閉csrf防護}

hasRole 方法

如果用戶具備給定角色就允許訪問,否則出現 403。
如果當前主體具有指定的角色,則返回 true。

從源碼中我們可以看出,前面會自動加個ROLE_

hasAnyRole

表示用戶具備任何一個條件都可以訪問。

總結

以上是生活随笔為你收集整理的[SpringSecurity]web权限方案_用户授权_基于权限访问控制_基于角色访问控制_hasAuthority和hasAnyAuthority_hasRole和hasAnyRole的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。