小编Pio*_*zke的帖子

spring boot oauth2.0 和 spring security:如何向通过 facebook 或 slack 登录的用户授予权限(权限)

我有一个使用 spring boot oauth2.0 构建的身份验证服务器,并遵循 david_syer 模型。

我的身份验证服务器执行以下操作 -

  1. 让用户通过第三方 oauth 提供商(如 google)登录,或让用户使用用户名和密码在我们的服务器上创建帐户并生成令牌。

  2. 因此,当用户使用像 google 这样的外部 oauth 登录时,我只需存储令牌并将相同的(google)令牌传递到我的 UI 应用程序以访问资源 api 服务器。我有一个验证令牌并允许 api 访问的身份验证过滤器。

  3. 当用户使用用户名和密码获取令牌时,我们存储用户及其权限并为他生成令牌。现在,UI 使用我们的身份验证服务器生成的令牌来访问资源 api 服务器。

现在我的问题是

  1. 这是使用来自外部 api 的令牌并使用相同的令牌访问我们的资源 api 服务器的正确方法吗?
  2. 由于我没有为他们添加用户条目和权限,如何为使用第 3 方 oauth 提供商注册的用户添加权限?

因此,如果用户来自永恒的提供者,加载用户和用户权限(来自 UserDetailsS​​ervice 的 loadUserByUsername() )的 spring security 将不会有任何东西。

spring oauth spring-security oauth-2.0

5
推荐指数
1
解决办法
1309
查看次数

在java中生成随机双数的最快方法

在我正在工作的项目中,我需要生成n个随机double数(取决于输入文件的内容)或者doubles如果我从输入文件中将它们转换为它们.逗号后面的这些数字应该只有2位小数(例如:)0.98.

我知道在Java 8中,有两种方法可以做到这一点:

  1. Java 8方式: nthNumber = Double.parseDouble(new DecimalFormat("#.##").format(ThreadLocalRandom.current().nextDouble(0,1)).replace(",","."));
  2. 旧时尚方式: nthNumber = Double.parseDouble(new DecimalFormat("#.##").format(new Random().nextDouble()).replace(",", "."));

渐渐地说,哪个是最快的?根据我对ADS的不了解,我会说它会是同一时间(O(n)?),但我并不是百分百肯定

除了这两种方式外,还有什么其他的方法来生成随机doubles之间0以及1它们更快,渐进地说,比我的建议?(相反,是否有方法可以做任何事情O(n)O(1)?)

提前感谢所有花一分钟回答我这个问题的人

java algorithm time

2
推荐指数
1
解决办法
2286
查看次数

标签 统计

algorithm ×1

java ×1

oauth ×1

oauth-2.0 ×1

spring ×1

spring-security ×1

time ×1