我尝试使用Dancer2插件:Dancer2::Plugin::Auth::Extensible和我自己的身份验证提供程序,因为我正在处理的项目中存在一个。
我已经调整了the given example,但是我需要将几个参数传递给authenticate_user
和users
子例程。该参数是动态的,因此我无法通过配置文件添加它。
我有一个不合理的方法将用户名作为字符串(连接)传入,然后将其拆分为authenticate_user
,但这不能使用users
子例程。这不是正确的做法。
我也尝试将其作为常规参数传递,例如
sub authenticate_user {
my ($self, $username_course, $password, $realm,$param) = @_;
但这不起作用(不确定原因),并且它不适用于users
,没有参数。
我认为,因为这是一个Dancer2 :: Plugin,我可以利用其中一些,但不完全是如何调整现有的插件。这就是我尝试过的:
package Dancer2::Plugin::Auth::Extensible::Provider::Test;
use Moo;
with "Dancer2::Plugin::Auth::Extensible::Role::Provider";
has authen_param => (is => 'rw');
plugin_keywords 'set_param'; # this fails compilation
sub set_param {
my ($self,$p) = @_;
$self->authen_param($p);
}
sub authenticate_user {
my ($self, $username, $password) = @_;
# use authen_param to authenticate
}
1
答案 0 :(得分:0)
似乎我可以使用会话来存储我需要的信息。我需要确保将参数存储在会话中,然后使用$self->plugin->dsl->session->data->{param_name}
检索它。