小编cap*_*ica的帖子

在单页Clojure Web应用程序中使用Friend进行身份验证和授权

我正在尝试将Friend身份验证和授权集成到Clojure/Compojure单页Web应用程序中.

我有一个由Angular控制器支持的登录表单,该控制器使用AJAX对Web应用程序验证用户名和密码,并获取经过身份验证的用户记录.因此,我不希望Friend基于表单的登录提供默认行为 - 我基本上想要依赖HTTP状态代码,而且我想要任何朋友页面重定向.

例如,制作未经身份验证的请求应该只返回401状态代码,而不应重定向到"/ login".我通过在配置好友时指定自定义的":unauthenticated-handler"(下面包含的代码)来完成此部分.

在成功登录后,我只需要200状态代码,而不是重定向到最初请求的页面.这是我无法工作的.

我根据各种示例编写了一个自定义的朋友身份验证工作流程(我的Clojure技能现在是初学者级别):

(defn my-auth
  [& {:keys [credential-fn]}]
    (routes
      (GET "/logout" req
        (friend/logout* {:status 200}))
      (POST "/login" {{:keys [username password]} :params}
        (if-let [user-record (-> username credential-fn)]
          (if
            (and
              [user-record password]
              (creds/bcrypt-verify password (:password user-record)))
            (let [user-record (dissoc user-record :password)]
              (workflows/make-auth user-record {:cemerick.friend/workflow :my-auth :cemerick.friend/redirect-on-auth? true}))
            {:status 401})
          {:status 401}))))
Run Code Online (Sandbox Code Playgroud)

这是我的中间件声明的处理程序:

(def app
  (-> 
    (handler/site
      (friend/authenticate app-routes
        {:credential-fn (partial creds/bcrypt-credential-fn my-credential-fn)
         :unauthenticated-handler unauthenticated
         :workflows [(my-auth :credential-fn my-credential-fn)]}))
    (session/wrap-session)
    (params/wrap-keyword-params)
    (json/wrap-json-body)
    (json/wrap-json-response {:pretty true})))
Run Code Online (Sandbox Code Playgroud)

以及上面引用的附加处理函数: …

authentication clojure compojure

8
推荐指数
1
解决办法
2122
查看次数

如何使用JAX-RS标准客户端API从Web服务处理错误的JSON内容类型?

我想使用烂番茄API搜索电影.

我有一个使用TMDB而不是烂番茄的等效的完全工作的应用程序.

我使用JBoss RESTEasy提供的标准JAX-RS客户端和RESTEasy Jackson2提供程序(我当然不能发布我的API密钥):

public MovieSearchResults search(String query) {
    return client
        .target("http://api.rottentomatoes.com/api/public/v1.0/movies.json")
        .queryParam("apikey", API_KEY)
        .queryParam("q", query)
        .request(MediaType.APPLICATION_JSON)
        .get(MovieSearchResults.class);
}
Run Code Online (Sandbox Code Playgroud)

MovieSearchResults类只是一个用于绑定JSON的JAXB注释类.

直接的问题是Rotten Tomatoes API正在为其所有JSON响应返回内容类型为"text/javascript"的响应.他们表现出不愿意改变他们的服务,即使这显然是在返回JSON时设置的错误内容类型,所以现在它就是它的本质.

我调用服务时遇到的异常是:

Exception in thread "main"
javax.ws.rs.client.ResponseProcessingException: 
javax.ws.rs.ProcessingException: 
Unable to find a MessageBodyReader of 
content-type text/javascript;charset=ISO-8859-1 and type class MovieSearchResults
Run Code Online (Sandbox Code Playgroud)

所以问题是:是否有一种简单的方法来获取/配置标准JAX-RS客户端以将返回的"text/javascript"内容类型识别为"application/json"?

这些 问题类似,但接受的答案似乎使用JBoss特定的API,我只想通过JAX-RS客户端API来完成.

java json web-services jax-rs rotten-tomatoes

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

QtQuick LocalStorage数据库版本不匹配(缺少ini文件中的"Version"属性)

我在Android上使用QtQuick/QML/Qt5.2.1.我也在桌面而不是Android上测试了这个问题,我也看到了同样的问题.

我用来LocalStorage在应用程序关闭后保留应用程序数据.

我用以下方法打开数据库openDatabaseSync:

var db = LocalStorage.openDatabaseSync(
    "TestDB",
    "1.0",  <-- version
    "Test Database",
    1000000,
    function(db) {
        createSchema(db);
        populateData(db);
    }
);
Run Code Online (Sandbox Code Playgroud)

如果数据库不存在并且已创建,则会执行回调函数,在这种情况下,我会创建数据库模式并填充初始数据集.

下次应用程序启动时,显然我想保持数据库原样,而不是重新创建它.

问题是当我重新启动应用程序时出现此错误:

Error: SQL: database version mismatch
Run Code Online (Sandbox Code Playgroud)

如果我检查在第一次运行应用程序时创建数据库时创建的.ini文件,我会看到:

[General]
Description=Test Database
Driver=QSQLITE
EstimatedSize=1000000
Name=TestDB
Version=
Run Code Online (Sandbox Code Playgroud)

您可以清楚地看到这里的问题是"版本"属性为空.

当应用程序启动时,它会将请求的版本"1.0"与此空字符串""进行比较并失败.

我可以通过将版本指定为""或通过修复ini文件来伪造它以使其工作 - 至少告诉我代码是正确的 - 但显然这不是解决方案.

那么,我错过了什么或者这是一个Qt错误吗?

qt qml qt5 qtquick2

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

如何使用日落和日出数据

我看到Hue API在"日光"传感器上提供了地理位置和日出/日落偏移的字段.

再具体一点:

lat
long
sunriseoffset
sunsetoffset
Run Code Online (Sandbox Code Playgroud)

目前发布的API未提供有关如何使用日出/日落的任何信息.

如果我使用更新传感器API来设置纬度和经度,日出/日落偏移是否会自动填充数据,我可以查询这些以相应地调整我的光照时间表?我想做的事情,例如"每天,日落时开灯+ 20分钟".

我本人要自己实现必要的算法,但是根据这些领域我需要做什么?

测试时,我更新了传感器配置的纬度和经度,这是更新后查询传感器结果的转储:

{
  "state": {
      "daylight":false,
      "lastupdated":"2014-11-06T19:19:31"
  },
  "config": {
      "on":true,
      "long":"1.5333W",
      "lat":"56.2442N",
      "sunriseoffset":30,
      "sunsetoffset":-30
  },
  "name":"Daylight",
  "type":"Daylight",
  "modelid":"PHDL00",
  "manufacturername":"Philips",
  "swvversion":"1.0"
}
Run Code Online (Sandbox Code Playgroud)

您可以看到我设置的纬度和经度值(默认情况下它们是"无").

现在很明显,日出和日落偏移不是计算值.它们用于配置传感器值何时从白天跳到非白天或反之亦然 - 例如,日出变为真正的"日出偏移"日出后几分钟.

桥梁是否知道给定地理位置的日出和日落时间?

如果是这样,我是否可以可靠地查询此传感器以确定日照或日照,并考虑日出和日落?

philips-hue

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

vlcj 全屏视频播放器

我使用vlc媒体播放器的vlcj库做了一个视频播放器。

这是我的代码来做到这一点..

public class Player {

    public static void main(final String[] args) {
        NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files\\VideoLAN\\VLC");
        Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);

        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Player(args);
            }
        });
    }

    private Player(String[] args) {
        JFrame frame = new JFrame("vlcj Tutorial");

        MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();

        Canvas c = new Canvas();
        c.setBackground(Color.black);
        JPanel p = new JPanel();
        p.setLayout(new BorderLayout());
        p.add(c, BorderLayout.CENTER);
        frame.add(p, BorderLayout.CENTER);


        EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer();
        mediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(c));
        frame.setLocation(100, 100);
        frame.setSize(1050, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);


        mediaPlayer.playMedia("D:\\EmbeddedMediaPlayer\\test.3gp");
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用此代码播放视频,但是如何像 vlc 媒体播放器一样在全屏上看到相同的视频? …

java swing awt vlc vlcj

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

mac os jdk 1.8问题vlc控制JAWT无法加载

JavaVM WARNING: JAWT_GetAWT must be called after loading a JVM
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Can't load JAWT
    at com.sun.jna.Native.getWindowHandle0(Native Method)
    at com.sun.jna.Native$AWT.getComponentID(Native.java:1879)
    at com.sun.jna.Native.getComponentID(Native.java:253)
    at uk.co.caprica.vlcj.player.embedded.videosurface.CanvasVideoSurface.attach(CanvasVideoSurface.java:69)
    at uk.co.caprica.vlcj.player.embedded.DefaultEmbeddedMediaPlayer.attachVideoSurface(DefaultEmbeddedMediaPlayer.java:156)
    at uk.co.caprica.vlcj.player.embedded.DefaultEmbeddedMediaPlayer.onBeforePlay(DefaultEmbeddedMediaPlayer.java:315)
    at uk.co.caprica.vlcj.player.DefaultMediaPlayer.play(DefaultMediaPlayer.java:705)
    at uk.co.caprica.vlcj.player.DefaultMediaPlayer.playMedia(DefaultMediaPlayer.java:222)
    at viziosecure360.Travizia.AddPlayer(Travizia.java:675)
    at viziosecure360.Travizia.setDefault(Travizia.java:234)
    at viziosecure360.Travizia$1.run(Travizia.java:187)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Run Code Online (Sandbox Code Playgroud)

java swing vlcj

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