Auth2 scope 权限控制

@PreAuthorize("#oauth2.hasAnyScope('web', 'client')")
@PreAuthorize("#oauth2.hasScope('app')")
@PreAuthorize("#oauth2.hasScope('admin:user')")
@Api(tags = "后台用户的接口")
@RestController
@RequestMapping("sys/user")
@PreAuthorize("#oauth2.hasAnyScope('web', 'client')")
public class SysUserController {
/**
 * 配置第三方应用
 * password 只要是登录都用这个授权方式
 * 客户端授权 用于微服务之间自发的进行远程调用时 资源服务器必须要token的情况 当然也是可以放行服务提供者的接口的
 *
 * @param clients
 * @throws Exception
 */
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
    clients.inMemory()
            .withClient("web")
            .secret(passwordEncoder.encode("web-secret"))
            .scopes("web")
            .authorizedGrantTypes("password")
            .accessTokenValiditySeconds(7200)
            .redirectUris("https://www.baidu.com")
            .and()
            .withClient("client")
            .secret(passwordEncoder.encode("client-secret"))
            .scopes("client")
            .authorizedGrantTypes("client_credentials")
            .accessTokenValiditySeconds(Integer.MAX_VALUE) // 客户端授权 内部调用的永久token 66年
            .redirectUris("https://www.baidu.com")
            // like12 add,20230806,新增手机端支持
            .and()
            .withClient("app")
            .secret(passwordEncoder.encode("app-secret"))
            .scopes("app")
            .authorizedGrantTypes("password")
            .accessTokenValiditySeconds(2592000) // 30天
            .redirectUris("https://www.baidu.com")
    ;
}

你可能感兴趣的:(java,前端,服务器)