99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

SpringSecurity集合(權限)-創新互聯

1、SpringSecurity授權

授權即認證通過后,系統給用戶賦予一定的權限,用戶只能根據權限訪問系統中的某些資源。RBAC是業界普遍采用的授權方式,它有兩種解釋:

10年積累的成都網站制作、成都網站建設經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站策劃后付款的網站建設流程,更有海口免費網站建設讓你可以放心的選擇與我們合作。Role-Based Access Control

基于角色的訪問控制,即按角色進行授權。比如在企業管理系統中,主體角色為總經理可以查詢企業運營報表

Resource-Based Access Control

基于資源的訪問控制,即按資源(或權限)進行授權。比如在企業管理系統中,用戶必須 具有查詢報表權限才可以查詢企業運營報表

2、權限表設計

用戶角色,角色權限都是多對多關系,即一個用戶擁有多個角色,一個角色屬于多個用戶;一個角色擁有多個權限,一個權限屬于多個角色。這種方式需要指定用戶有哪些角色,而角色又有哪些權限。

3、自定義查詢權限
@Service
public class MySecurityService implements UserDetailsService {
    @Autowired
    @Qualifier(value = "userMapper")
    private UserMapper userMapper;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
//       1、查詢條件
        QueryWrapperwrapper = new QueryWrapper().eq("username", username);
//      2、查詢用戶
        Users users = userMapper.selectOne(wrapper);
        if(users==null){
            return null;
        }
//      3.查詢用戶所有權限
        Listpermissions = userMapper.findPermissionByUsername(username);
//      4.將自定義的權限集合轉為Security的權限類型集合
        Listlist = new ArrayList<>();
        for (Permission permission:permissions) {
            list.add(new SimpleGrantedAuthority(permission.getUrl()));
        }
//      3、封裝UserDetails對象
        UserDetails userDetails = User.withUsername(users.getUsername()).password(users.getPassword()).authorities(list).build();
        return userDetails;
    }
}
3.1自定義訪問權限

根據請求的路徑進行攔截,如果user沒有訪問url的權限則狀態碼為403

//      需要認證的資源
        http.authorizeHttpRequests()
                .antMatchers("/login.html").permitAll()//登錄頁不需要認證
                .antMatchers("/fail").permitAll()//失敗頁面不需要認證
                //需要認證的權限
                .antMatchers("/reportform/find").hasAuthority("/reportform/find")
                .antMatchers("/salary/find").hasAuthority("/salary/find")
                .antMatchers("/tax/find").hasAuthority("/tax/find")
                .anyRequest().authenticated();//其余所有請求都需要認證
@Secured

通過@Secured注解添加訪問權限(權限必須以ROLE_開頭)不常用

@SpringBootApplication
@MapperScan
@EnableGlobalMethodSecurity(securedEnabled = true)//開啟secured注解掃描
public class SpringSecurity2Application {

    public static void main(String[] args) {
        SpringApplication.run(SpringSecurity2Application.class, args);
    }

}
//  對權限進行攔截必須以ROLE_開頭,數據也必須以ROLE_開頭
    @Secured("ROLE_/reportform/find")
    @GetMapping("/reportform/find")
    @ResponseBody
    public String testUrl1(){
        System.out.println("/reportform/find");
        return "/reportform/find權限攔截";
    }

    @Secured("/salary/find")//403沒有權限
    @GetMapping("/salary/find")
    @ResponseBody
    public String testUrl2(){
        System.out.println("/salary/find");
        return "/salary/find權限攔截";
    }

    @Secured("/tax/find")//403沒有權限
    @GetMapping("/tax/find")
    @ResponseBody
    public String testUrl3(){
        System.out.println("/tax/find");
        return "/tax/find權限攔截";
    }
@PreAuthorize(推薦)

該注解可以在方法執行前判斷用戶是否具有權限

//        默認放行首頁和失敗頁    
    http.authorizeHttpRequests()
                .antMatchers("/login.html").permitAll()//登錄頁不需要認證
                .antMatchers("/fail").permitAll()//失敗頁面不需要認證
                //需要認證的權限
//                .antMatchers("/reportform/find").hasAuthority("/reportform/find")
//                .antMatchers("/salary/find").hasAuthority("/salary/find")
//                .antMatchers("/tax/find").hasAuthority("/tax/find")
                .anyRequest().authenticated();//其余所有請求都需要認證
@SpringBootApplication
@MapperScan
@EnableGlobalMethodSecurity(prePostEnabled = true) //開啟@PreAuthorize注解掃描
public class SpringSecurity2Application {

    public static void main(String[] args) {
        SpringApplication.run(SpringSecurity2Application.class, args);
    }

}
//url權限匹配    
@PreAuthorize("hasAnyAuthority('/salary/find')")
    @GetMapping("/salary/find")
    @ResponseBody
    public String testUrl2(){
        System.out.println("/salary/find");
        return "/salary/find權限攔截";
    }

    @PreAuthorize("hasAnyAuthority('/tax/find')")
    @GetMapping("/tax/find")
    @ResponseBody
    public String testUrl3(){
        System.out.println("/tax/find");
        return "/tax/find權限攔截";
    }
前端控制訪問權限

添加xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5",sec:authorize="hasAnyAuthority('/url')”若user有訪問該url權限則顯示此菜單

org.thymeleaf.extrasthymeleaf-extras-springsecurity5
主頁面主頁面
菜單一
菜單二
菜單三
退出登錄
SpringSecurity自定義權限不足頁面,解決403權限異常
//自定義權限不足頁面
權限異常權限不足

定義權限不足處理器類需要實現AccessDeniedHandler接口實現其中的handle方法

public class NoPermissionHandler implements AccessDeniedHandler {
    @Override
    public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {
        System.out.println("權限不足");
        response.sendRedirect("/noPermission.html");
    }
}

SecurityConfig權限配置類中添加自定義的權限不足處理器

//      權限不足異常
        http.exceptionHandling()
                .accessDeniedHandler(new NoPermissionHandler());

博客:孤獨&烙印的博客_博客-springSecurity,spring-fox,vue領域博主

你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

網站欄目:SpringSecurity集合(權限)-創新互聯
新聞來源:http://www.yijiale78.com/article38/dgsepp.html

成都網站建設公司_創新互聯,為您提供外貿建站網站營銷域名注冊網站策劃企業網站制作品牌網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設