當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
[SpringSecurity]web权限方案_用户授权_基于权限访问控制_基于角色访问控制_hasAuthority和hasAnyAuthority_hasRole和hasAnyRole
生活随笔
收集整理的這篇文章主要介紹了
[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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教您如何看显示器参数如何看电脑屏幕
- 下一篇: 总觉得自己配不上美好的东西,3招助你查杀