SpringSecurity权限控制实现原理解析

网友投稿 362 2022-12-13


SpringSecurity权限控制实现原理解析

菜单控制:

可以用来判断这个用户是不是有这些角色,没有的话就不展示

数据控制:

由于数据都是从后端查的,在后端控制权限就可以了

pre-post-annotations="enabled"

secured-annotations="enabled"/>

注:这个要放在mvOlWxyc的容器中,因为子容器可以访问到主容器,主容器访问不到子容器

/表示当前类中所有方法都需要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";

}

}

//表示当前类中findAll方法需要ROLE_ADMIN或者ROLE_PRODUCT才能访问

@Controller

@RequestMapping("/product")

public class ProductController {

@RequeOlWxystMapping("/findAll")

@PreAuthorize("hasAnyRole('ROLE_ADMIN','ROLE_PRODUCT')")//spring表达式注解

public String findAll(){

return "product-list";

}

}

//表示当前类中所有方法都需要ROLE_ADMIN或者ROLE_PRODUCT才能访问

@Contrhttp://oller

@RequestMapping("/product")

@Secured({"ROLE_ADMIN","ROLE_PRODUCT"})//SpringSecurity注解

public class ProductController {

@RequestMapping("/findAll")

public String findAll(){

return "product-list";

}

}

但是会报403无法访问

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

方式二:在 web.xml中处理

403

/403.jsp

方式三:编写异常处理器

/**

* @author WGR

* @create 2020/3/2 -- 17:33

*/

@ControllerAdvice

public class ControllerExceptionAdvice {

//只有出现AccessDeniedException异常才调转403.jsp页面

@ExceptionHandler(AccessDeniedException.class)

public String exceptionAdvice(){

System.out.println("1234");

return "forward:/403.jsp";

}

}

注:如果是spring项目,也要把这个扫描进去。

pre-post-annotations="enabled"

secured-annotations="enabled"/>

注:这个要放在mvOlWxyc的容器中,因为子容器可以访问到主容器,主容器访问不到子容器

/表示当前类中所有方法都需要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";

}

}

//表示当前类中findAll方法需要ROLE_ADMIN或者ROLE_PRODUCT才能访问

@Controller

@RequestMapping("/product")

public class ProductController {

@RequeOlWxystMapping("/findAll")

@PreAuthorize("hasAnyRole('ROLE_ADMIN','ROLE_PRODUCT')")//spring表达式注解

public String findAll(){

return "product-list";

}

}

//表示当前类中所有方法都需要ROLE_ADMIN或者ROLE_PRODUCT才能访问

@Contrhttp://oller

@RequestMapping("/product")

@Secured({"ROLE_ADMIN","ROLE_PRODUCT"})//SpringSecurity注解

public class ProductController {

@RequestMapping("/findAll")

public String findAll(){

return "product-list";

}

}

但是会报403无法访问

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

方式二:在 web.xml中处理

403

/403.jsp

方式三:编写异常处理器

/**

* @author WGR

* @create 2020/3/2 -- 17:33

*/

@ControllerAdvice

public class ControllerExceptionAdvice {

//只有出现AccessDeniedException异常才调转403.jsp页面

@ExceptionHandler(AccessDeniedException.class)

public String exceptionAdvice(){

System.out.println("1234");

return "forward:/403.jsp";

}

}

注:如果是spring项目,也要把这个扫描进去。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringSecurity rememberme功能实现过程解析
下一篇:SpringSecurity的防Csrf攻击实现代码解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~