zoukankan      html  css  js  c++  java
  • SpringBootSecurity学习(06)网页版登录方法级别的权限

    用户授权

    前面讨论过,Web应用的安全管理,主要包括两个方面的内容,一个是用户身份的认证,即用户登录的设计,二是用户授权,即一个用户在一个应用系统中能够执行哪些操作的权限管理。前面介绍了登录,下面简单介绍一下用户授权。用户拥有的权限是根据用户的角色来决定的,并且security中,用户的权限可以控制到方法级别。

    方法级别的权限控制

    每个url的访问都是定义在controller方法上面的,因此需要配置方法权限。开启方法级别的权限,需要引入@EnableGlobalMethodSecurity注解:

    file

    注解中有三个参数,securedEnabled = true 表示方法权限控制可以使用安全注解 @Secured, 该注解的值 必须在现有的角色名称前加上ROLE_前缀,如 @Secured("ROLE_ADMIN"),多个角色可以这样写 @Secured({"ROLE_ONE","ROLE_TWO"}),表示最少有其中一个角色才能访问。

    prePostEnabled = true 表示方法权限前置注解 @PreAuthorize,@PostAuthorize启用,注解 @PreAuthorize 适合进入方法之前验证授权。 @PreAuthorize可以兼顾,角色/登录用户权限,参数传递给方法等等 ,@PreAuthorize("true") 表示允许所有访问,注解 @PostAuthorize 不经常使用,它在检查授权方法之后才被执行,所以它适合用在对返回的值作验证授权。Spring EL提供可在表达式语言来访问并从方法返回 returnObject 对象来反映实际的对象。@PreAuthorize单个角色可以这样写 @PreAuthorize("hasRole('TWO')"),多个角色可以这样写 @PreAuthorize("hasRole('ONE') AND hasRole('TWO')"),@PreAuthorize("hasRole('ONE') OR hasRole('TWO')")注意and和or的意义。AND表示拥有所有权限才能访问,OR表示拥有任意一种权限就能访问。

    jsr250Enabled = true 表示 启动了JSR-250的注解支持,在方法上使用注解来控制访问权限,注解@DenyAll 拒绝所有访问,注解 @PermitAll 允许所有访问,注解 @RolesAllowed({"USER", "ADMIN"}) 该方法只要具有"USER", "ADMIN"任意一种权限就可以访问。这里可以省略前缀ROLE_,实际的权限可能是ROLE_ADMIN。

    项目演示

    我们在内存中新建三个用户,分别是 one/one,two/two,three/three,他们三个的角色分别是 ONE,TWO,THREE,

    file

    三个用户,分别拥有三个不同的角色,下面新建三个页面,分别赋予三个角色权限:

    file

    三个方法的权限注解分别使用了三种方式赋予角色。下面我们登录one,查看效果,one页面是可以访问的:

    file

    two页面禁止访问:

    file

    显示403,forbidden。three页面也是一样:

    file

    其它两个用户可以自行登录测试。

    用户权限不足处理器

    前面介绍登录成功处理器,用户权限不足的情况也可以统一进行处理,让权限不足的情况下,跳转到同一个页面。下面新建类
    AuthLimitHandler,实现AccessDeniedHandler接口:

    file

    /limit页面可以自己创建,完成后,在配置类中配置权限不足处理器:

    file

    重启访问,就可以看到处理效果:

    file

    file

    代码地址:https://gitee.com/blueses/spring-boot-security 06

  • 相关阅读:
    ClickOnce發布經驗
    reporting Server組件不全引起的致命錯誤
    異步調用
    Usercontrol Hosted in IE
    MATLAB命令大全(转载)
    一种保护眼睛的好方法
    关于oracle自动编号
    An Algorithm Summary of Programming Collective Intelligence (1)
    An Algorithm Summary of Programming Collective Intelligence (3)
    An Algorithm Summary of Programming Collective Intelligence (4)
  • 原文地址:https://www.cnblogs.com/guos/p/11609723.html
Copyright © 2011-2022 走看看