1

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

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

我怎样才能做到这一点,当用户登录时,他们的 ID 被用来提取与他们相关的数据?(/用户/仪表板/{id})?任何文件或建议将不胜感激!

4

2 回答 2

1

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
}; 
于 2015-05-15T14:44:44.303 回答
0

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

Dancer2::Plugin::Auth::Extensible

$user = logged_in_user();

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

my $user_id = $user->{user_id};

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

于 2015-05-19T15:17:34.030 回答