zoukankan      html  css  js  c++  java
  • SpringSecurity(十一): 权限表达式

    1、Spring Security 允许我们使用 Spring EL 表达式,来进行用户权限的控制,如果对应的表达式结果返回true,则表示拥有对应的权限,反之则无。

    Spring Security 可用表达式对象的基类是SecurityExpressionRoot

    表达式

    描述

     

    permitAll()

    总是返回true,表示允许所有访问(认证不认证都可访问 URL或方法

     

    denyAll()

    总是返回false,表示拒绝所有访问(永远访问不到指定的 URL或方法

    isAnonymous()

    当前用户是一个匿名用户(未登录用户)允许访问,返回true

    isRememberMe()

    当前用户是通过Remember-Me自动登录的允许访问,返回true

     

    isAuthenticated()

    当前用户是已经登录认证成功的允许访问(包含了rememberMe自动   登录的),返回true

     

    isFullyAuthenticated()

    如果当前用户既不是一个匿名用户,同时也不是通过Remember-Me自  动登录的,则允许访问(可以理解为通过页面输入帐户信息认证的)。

     

    hasRole(String role)

    当前用户拥有指定角色权限的允许访问,返回true。注意: 指定的角色名(如: ADMIN ) SpringSecurity 底层会在前面拼接 ROLE_ 字符串,所以在UserDetailsService实现类,数据库返回的角色名要有ROLE_ADMIN

     

    hasAnyRole([role1, role2])

    多个角色以逗号分隔的字符串。如果当前用户拥有指定角色中的任意一个则允许访问,返回true。

     

    hasAuthority(String authority)

    当前用户拥有指定权限标识的允许访问,返回true。注意:和 hasRole

    区别是, hasAuthority 不会在前面拼接 ROLE_ 字符串, 。

     

    hasAnyAuthority([auth1,auth2])

    多个权限标识是以逗号分隔的字符串。如果当前用户拥有指定权限标识中的任意一个则允许访问,返回true

    hasIpAddress("192.168.1.1/29")

    限制指定IP或指定范围内的IP才可以访问

    2、表达式控制URL权限

    a、拥有 sys:user 权限的用户,可以访问任意请求方式的 /user
    .antMatchers("/user").hasAuthority("sys:user")
     b、拥有 sys:role 权限的用户,可以访问 get 请求方式的 /role
    .antMatchers(HttpMethod.GET, "/role").hasAuthority("sys:role")
    c、 如果想同时满足多个表达式权限,要使用 access 方法来指定表达式
           如:拥有 sys:permission 权限或 ADMIN 角色,可以访问 get 请求
    .antMatchers(HttpMethod.GET, "/permission").access("hasAuthority('sys:permission') or hasAnyRole('ADMIN')") //角色会加上前缀 ROLE_,即真实是 ROLE_ADMIN
  • 相关阅读:
    一文了解网络编程之走进TCP三次握手和HTTP那些你不知道的事
    并发编程面试必备之ConcurrentHashMap源码解析
    java延迟队列DelayQueue及底层优先队列PriorityQueue实现原理源码详解
    聊一聊面试中常问的延时队列
    面试必备HashMap源码解析
    synchronized解锁源码分析
    synchronized的jvm源码加锁流程分析聊锁的意义
    jvm源码解析java对象头
    从ReentrantLock源码入手看锁的实现
    从synchronized和lock区别入手聊聊java锁机制
  • 原文地址:https://www.cnblogs.com/yscec/p/14327825.html
Copyright © 2011-2022 走看看