使用Dancer2 :: Plugin :: DBIC从数据库中提取值

时间:2015-05-14 10:37:28

标签: json perl postgresql dancer apiary.io

我有一个webapp,用户可以登录并查看包含一些数据的仪表板。我正在使用API​​ary用于模拟数据,在我的Postgres数据库中,我的每个用户都有一个ID。这些ID也在APIary JSON文件中使用,并带有相关信息。

我正在使用REST :: Client和JSON进行连接,例如用户仪表板的url是:“/ user / dashboard / 12345”(在Apiary中) 在数据库中有一个ID为“12345”的用户。

如何在用户登录时这样做,他们的ID用于提取与他们相关的数据? (/用户/仪表板/ {ID})?任何文件或建议将不胜感激!

2 个答案:

答案 0 :(得分:1)

Dancer2::Plugin::Auth::Extensible的文档显示了您需要做的事情的一部分。简而言之,请在会话中保存用户ID。我在文档中使用了部分代码并添加了会话。

post '/login' => sub {
    my ($success, $realm) = authenticate_user(
        params->{username}, params->{password}
    );
    if ($success) {
        #  we are saving your user ID to the session here
        session logged_in_user => params->{username};
        session logged_in_user_realm => $realm;
    } else {
        # authentication failed
    }
};

get '/dashboard' => sub {
    my $client = REST::Client->new();

    # ... and now we use the user ID from the session to get the
    # from the webservice

    $client->GET( $apiary . '/user/dashboard/' . session('logged_in_user') );
    my $data = $client->responseContent();

    # do stuff with $data
}; 

答案 1 :(得分:0)

对于那些想知道我最终做什么的人:

Dancer2::Plugin::Auth::Extensible

$user = logged_in_user();

当我打印它时,它向我展示了用户在数据库中拥有的所有值的哈希值,包括我拥有的附加ID。所以我用

访问了id
my $user_id = $user->{user_id};

并将$user_id附加到网址的末尾!