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

Using Dancer2::Plugin::DBIC to pull values from database

我有一个网络应用程序,用户可以在其中登录并查看包含一些数据的仪表板。我将 APIary 用于模拟数据,在我的 Postgres 数据库中,我的每个用户都有一个 ID。这些 ID 也用于包含相关信息的 APIary JSON 文件中。

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

如何才能在用户登录时使用他们的 ID 提取与他们相关的数据? (/user/dashboard/{id})?任何文件或建议将不胜感激!

Dancer2::Plugin::Auth::Extensible 的文档显示了您需要做的一部分工作。简而言之,将用户 ID 保存在 session 中。我在文档中获取了部分代码并添加了会话。

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
}; 

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

Dancer2::Plugin::Auth::Extensible

$user = logged_in_user();

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

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

并在url的末尾附加了$user_id