小编Jua*_*oza的帖子

Spring Boot OAuth2单点注销(注销)

我正在考虑将OAuth2用于我的应用程序.我想要实现的架构如下:

  • 我将拥有自己的(也是唯一一个)授权服务器
  • 某些资源应用程序使用授权服务器验证对其资源的访问
  • 一些客户端应用程序(Web,移动)将用户重定向到授权服务器进行身份验证并成功将消耗资源应用程序上的api.

到目前为止,我已设法在3个基本应用程序(1个auth服务器,1个资源服务器和1个客户端)之间实现此交互.我没有工作的是注销功能.我已经读过Dave Syer在他的教程中描述的"臭名昭着的棘手问题",但在这种情况下我真的需要用户在注销后重新登录.我已经尝试给访问令牌和刷新令牌提供几秒钟,但是当到期时,我没有被提示再次登录,而是在客户端应用程序上获得NPE.我也尝试过这篇文章中提出的解决方案来从令牌存储中删除令牌,但它不起作用.单点注销对我来说是这种实现的理想行为.如何使用Spring Boot Oauth2实现此目的.如果由于某种原因不可能,我可以使用哪些替代方法来实现使用Spring Boot的集中安全性?

提前致谢.

java spring spring-security spring-boot spring-security-oauth2

12
推荐指数
1
解决办法
1万
查看次数

MediaPlayer-java.io.FileNotFoundException:没有内容提供者

我已经写了一段时间的mp3播放器,但是由于某种原因,出现了以下异常:

W / MediaPlayer:无法打开/ storage / emulated / 0 / Music /通用音乐file.mp3:java.io.FileNotFoundException:没有内容提供者:/ storage / emulated / 0 / Music / generic音乐file.mp3

每当我尝试播放任何歌曲时,都会不断弹出。

我检索歌曲路径的方式是:

file.getAbsolutePath()
Run Code Online (Sandbox Code Playgroud)

其中file是一个File实例。我播放歌曲的方式是:

try {
    mediaPlayer = MediaPlayer.create(this, Uri.parse(currentTrack.getPath()));
    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
            nextTrack();
        }
    });
} catch (Exception ex) {
    ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

其中是一类,它扩展的实例的引用服务

有任何想法吗?

java android exception android-mediaplayer

6
推荐指数
1
解决办法
1万
查看次数

配置 Jenkins 编译 git 项目时,JAVA_HOME 设置为无效目录

编译代码时,Jenkins 出现以下错误:

Error: JAVA_HOME is set to an invalid directory. 
JAVA_HOME = "C:\Users\admin\.jenkins\tools\hudson.model.JDK" 
Please set the JAVA_HOME variable in your environment to match the 
location of your Java installation. 
Run Code Online (Sandbox Code Playgroud)

在环境变量中,我将 JAVA_HOME 设置为:

C:\Program Files\Java\jdk1.8.0_45
Run Code Online (Sandbox Code Playgroud)

在 Jenkins 的“构建”部分下,我将“调用顶级 Maven 目标”的目标设置为“编译”。

请提出您的宝贵建议。

java git maven jenkins

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

休眠验证器 java.lang.NoClassDefFoundError:无法初始化类 org.hibernate.validator.internal.engine.ConfigurationImpl

我已经阅读了thisthis,但这并没有帮助......

我正在使用具有以下版本/依赖项的休眠验证器:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.4.1.FINAL</version>
</dependency>
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.el</artifactId>
    <version>3.0.1-b08</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我以为我做的一切都是正确的,我的日志(以 verbose:class 作为标志)告诉我:

[从文件加载 org.hibernate.validator.internal.engine.ConfigurationImpl:.../hibernate-validator-5.4.1.Final.jar]

[从文件加载 javax.validation.Validation:.../validation-api-1.1.0.Final.jar]

但稍后在运行时,当我使用

Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Run Code Online (Sandbox Code Playgroud)

我得到经典错误:

java.lang.NoClassDefFoundError: 无法初始化类 org.hibernate.validator.internal.engine.ConfigurationImpl

我还尝试降级到 hibernate-validator 4.3.1 和 javax.validation-api 1.0.0,但奇怪的是错误仍然相同。

我在这个项目中有很多其他依赖项(例如 Spring 等),但据我所知,没有一个使用 hibernate-validator 或 javax 验证 api。(如果是这样,我也会看到它们加载到日志中,不是吗?)

有什么帮助吗?

java validation hibernate-validator

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

Java 8:用lambda替换匿名类

我在替换这个特定的例子时遇到了问题:

Consumer consumer = new DefaultConsumer(channel) {
    @Override
    public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
            throws IOException {
        String message = new String(body, "UTF-8");
        System.out.println(" [x] Received '" + message + "'");
    }
};
Run Code Online (Sandbox Code Playgroud)

是否可以用lambda替换它,因为它使用DefaultConsumer的非默认构造函数?

它来自rabbitMQ java教程 - > LINK到全班

java lambda java-8

6
推荐指数
1
解决办法
1335
查看次数

Browser-Mob Proxy无法使用Chrome驱动程序捕获网络流量

我正在使用此代码将浏览器mob代理与maven依赖项net.lightbody.bmp集成browsermob-core 2.1.5

它根本没有捕获网络请求,我得到了这种har文件:

{
   "log":{
      "version":"1.2",
      "creator":{
         "name":"BrowserMob Proxy",
         "version":"2.1.0-beta-6-littleproxy",
         "comment":""
      },
      "pages":[
         {
            "id":"11",
            "startedDateTime":"2017-10-26T17:28:42.501+05:30",
            "title":"11",
            "pageTimings":{
               "comment":""
            },
            "comment":""
         }
      ],
      "entries":[],
      "comment":""
   }
}
Run Code Online (Sandbox Code Playgroud)
package lenskart.tests;

import java.io.File;
import java.net.UnknownHostException;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Test;

import net.lightbody.bmp.BrowserMobProxyServer;
import net.lightbody.bmp.client.ClientUtil;
import net.lightbody.bmp.mitm.manager.ImpersonatingMitmManager;
import net.lightbody.bmp.proxy.CaptureType;

public class ProxyTestClass {

    @Test
    public static void main() throws Exception {
        // TODO Auto-generated method stub

        BrowserMobProxyServer browserMobProxy = new BrowserMobProxyServer();
        browserMobProxy.setTrustAllServers(true); …
Run Code Online (Sandbox Code Playgroud)

java selenium selenium-webdriver browsermob-proxy

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

Transfer-Encoding的触发条件是什么:为Tomcat 8分块

这是server.xml我的tomcat 8中的配置.

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
Run Code Online (Sandbox Code Playgroud)

我只是发现一些RESTful api请求返回Transfer-Encoding: chunked标题,有些则没有.并且看起来它没有遵循我之前理解的规则:"内容大小超过阈值(比如8k)的响应将返回Transfer-Encoding: chunked"

所以我的问题是什么才是真正的触发条件 Transfer-Encoding: chunked

java tomcat http chunked-encoding

5
推荐指数
0
解决办法
337
查看次数

使用java8中的单个DateTimeFormatter解析HH:mm:ss和H:mm:用于LocalTime的ss

我试图使用java 8中的方法解析08:24:55(HH:mm:ss)8:24:55(H:mm:ss)LocalTime.parse().下面代码成功执行并打印08:24:55:

LocalTime time=LocalTime.parse("08:24:55", DateTimeFormatter.ofPattern("HH:mm:ss"));
System.out.println(time);
Run Code Online (Sandbox Code Playgroud)

但输入8:24:55的同一组代码失败并抛出错误:

线程"main"中的异常java.time.format.DateTimeParseException:无法在索引0处解析文本"8:24:55"

有什么建议可以做什么来处理这两种情况?

java datetime java-8

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

Java - 创建具有给定范围的IntStream,然后使用map函数随机化每个元素

所以我创建了一个IntStream,我给它一个1到9的范围.我希望能够使用map函数来获取给定范围内的每个元素(1-9)并随机化每个元素.

基本上我想在每次运行程序时以不同的顺序流式传输数字1 - 9.(我对其他想法持开放态度,但必须使用流).

我听说过使用Java的Random类,但我不确定如何在每个元素的映射上实现它.

我试过这样做,但有错误:

 IntStream.range(1, 9).map(x -> x = new Random()).forEach(x -> System.out.println(x));
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

java random java-8 java-stream

5
推荐指数
2
解决办法
821
查看次数

在Java中跳过for循环中的数字.我怎样才能让它变得更干净?

我需要创建一个从305开始到397结束的for循环.

for (int i = 305; i < 397; i++) {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

问题是,我需要跳过310,321,332,343,354,365,376和387.

我知道我可以通过在循环中放置以下内容来完成此操作:

int[] skip = { 310, 321, 332, 343, 354, 365, 376, 387 };
for (int i2 : skip) {
    if (i != i2) {
        //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

但我觉得有一种更有效,更干净的方法来实现这一目标.

java int loops for-loop skip

4
推荐指数
2
解决办法
4192
查看次数