SpringSecurity權(quán)限控制實(shí)現(xiàn)原理解析

菜單控制:

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了遼陽縣免費(fèi)建站歡迎大家使用!

SpringSecurity權(quán)限控制實(shí)現(xiàn)原理解析

SpringSecurity權(quán)限控制實(shí)現(xiàn)原理解析

可以用來判斷這個(gè)用戶是不是有這些角色,沒有的話就不展示

SpringSecurity權(quán)限控制實(shí)現(xiàn)原理解析

SpringSecurity權(quán)限控制實(shí)現(xiàn)原理解析

數(shù)據(jù)控制:

由于數(shù)據(jù)都是從后端查的,在后端控制權(quán)限就可以了

<!--
    開啟權(quán)限控制注解支持
    jsr250-annotations="enabled"表示支持jsr250-api的注解,需要jsr250-api的jar包
    pre-post-annotations="enabled"表示支持spring表達(dá)式注解
    secured-annotations="enabled"這才是SpringSecurity提供的注解
   -->
  <security:global-method-security jsr250-annotations="enabled"
                   pre-post-annotations="enabled"
                   secured-annotations="enabled"/>

注:這個(gè)要放在mvc的容器中,因?yàn)樽尤萜骺梢栽L問到主容器,主容器訪問不到子容器

/表示當(dāng)前類中所有方法都需要ROLE_ADMIN或者ROLE_PRODUCT才能訪問
@Controller
@RequestMapping("/product")
@RolesAllowed({"ROLE_ADMIN","ROLE_PRODUCT"})//JSR-250注解
public class ProductController {
@RequestMapping("/findAll")
public String findAll(){
return "product-list";
}
}
//表示當(dāng)前類中findAll方法需要ROLE_ADMIN或者ROLE_PRODUCT才能訪問
@Controller
@RequestMapping("/product")
public class ProductController {
@RequestMapping("/findAll")
@PreAuthorize("hasAnyRole('ROLE_ADMIN','ROLE_PRODUCT')")//spring表達(dá)式注解
public String findAll(){
return "product-list";
}
}
//表示當(dāng)前類中所有方法都需要ROLE_ADMIN或者ROLE_PRODUCT才能訪問
@Controller
@RequestMapping("/product")
@Secured({"ROLE_ADMIN","ROLE_PRODUCT"})//SpringSecurity注解
public class ProductController {
@RequestMapping("/findAll")
public String findAll(){
return "product-list";
}
}

但是會(huì)報(bào)403無法訪問

方式一:在 spring-security.xml配置文件中處理

<!--設(shè)置可以用spring的el表達(dá)式配置Spring Security并自動(dòng)生成對應(yīng)配置組件(過濾器)-->
<security:http auto-config="true" use-expressions="true">
<!--省略其它配置-->
<!--403異常處理-->
<security:access-denied-handler error-page="/403.jsp"/>
</security:http>

方式二:在 web.xml中處理

<error-page>
  <error-code>403</error-code>
  <location>/403.jsp</location>
</error-page>

方式三:編寫異常處理器

/**
 * @author WGR
 * @create 2020/3/2 -- 17:33
 */
@ControllerAdvice
public class ControllerExceptionAdvice {

  //只有出現(xiàn)AccessDeniedException異常才調(diào)轉(zhuǎn)403.jsp頁面
  @ExceptionHandler(AccessDeniedException.class)
  public String exceptionAdvice(){
    System.out.println("1234");
    return "forward:/403.jsp";
  }
}

注:如果是spring項(xiàng)目,也要把這個(gè)掃描進(jìn)去。

SpringSecurity權(quán)限控制實(shí)現(xiàn)原理解析

SpringSecurity權(quán)限控制實(shí)現(xiàn)原理解析

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

名稱欄目:SpringSecurity權(quán)限控制實(shí)現(xiàn)原理解析
當(dāng)前鏈接:http://bm7419.com/article26/pciocg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)App設(shè)計(jì)、網(wǎng)站營銷、企業(yè)網(wǎng)站制作、定制開發(fā)自適應(yīng)網(wǎng)站

廣告

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

網(wǎng)站優(yōu)化排名