我有一个应用程序正在使用Spring Security性授权OAuth2令牌。使用@PreAuthorize标记,我可以轻松确保用户在允许他们访问方法之前拥有权限:
@PreAuthorize("#oauth2.hasScope('account.read')")
public void getAccount(int accountId);
{
//return account
}
这对于限制没有帐户的用户非常有效。访问此方法的读取权限。
唯一的问题是,现在任何具有此权限的用户都可以访问任何帐户。我想限制用户只访问自己的帐户。我相信这是一种常见的情况。其他应用程序如何处理此问题?
所以,这里的问题——系统如何知道帐户是否属于用户?答案是您可能正在存储用户
@PreAuthorize("#oauth2.hasScope('account.read')")
public Account getAccount(int accountId) {
// get account from db
Account account = repository.findById(accountId);
// you will need a little helper to get your User from
//Spring SecurityContextHolder or whatever there for oauth2
User user = securityManager.getCurrentUser();
if (account.belongs(user)) {
return account;
} else {
throw new UnathorizedException("User is not authorized to view account");
}
}
Upd。可能的改进之一可能是首先获取用户,从中获取id并创建存储库。findByIdAndUserId(accountId,userId)或类似的东西。(甚至是repositoryFindByIdAndUser(accountId,user))
本文向大家介绍SpringBoot + SpringSecurity 环境搭建的步骤,包括了SpringBoot + SpringSecurity 环境搭建的步骤的使用技巧和注意事项,需要的朋友参考一下 一、使用SpringBoot+Maven搭建一个多模块项目(可以参考这篇文章 --> 这里) 二、删除父工程的src文件,删除app、browser、core下的.java文件 依赖关系: dem
我们希望,之前的章节对于如何构建一个 Meteor 应用,给了你一个良好的概述。但是,现在还要去哪里学习呢? 额外章节 首先,如果你还没有购买本书的话,可以购买 Full 或 Premium 版本来阅读本书额外的章节。这些章节将引导你深入真实场景,比如为应用建立 API,与第三方服务集成并迁移数据。 Meteor 手册 除了官方 文档,Meteor 手册 挖掘了更深度的特定主题,比如 Tracke
问题内容: 我四处搜索,据我所知,POST表单请求已经限制为10MB(http://golang.org/src/net/http/request.go#L721)。 如果要减少这种方法的使用量,则不确定如何正确执行此操作。我会尝试这样的事情: 但是错误返回是否也会关闭连接?我如何避免必须阅读所有内容?我发现了这一点,但是如果未设置内容长度,并且在阅读过程中我意识到文件太大,该怎么办。 我将此用作
SQLAlchemy 1.4 / 2.0 Tutorial 此页是 SQLAlchemy 1.4/2.0教程 . 上一页: 使用相关对象 进一步阅读 下面的部分是主要的顶层部分,它们将更详细地讨论本教程中的概念,并描述每个子系统的更多特性。 核心基本参考 使用引擎和接头 模式定义语言 SQL语句和表达式API 列和数据类型 ORM基本参考 映射器配置 关系配置 使用会话 查询数据,加载对象
我已经在网上搜索了,我发现所有的都是使用DecimalFormat并尝试了它,但当我在Android Studio上编码时,出现了一条消息,说必须使用API24来执行这种命令。API24有错误和所有的网站,我看,建议使用API23。 因此,我需要一种方法来显示双数字,只有两个十进制数字在我的AlertDialog。
有人能告诉我如何开始实施Android Material Design guide中描述的垂直非线性步进控制吗 http://www.google.com/design/spec/components/steppers.html