我有一个Web界面和登录机制,通过检查用户是否可以在服务器上登录来进行身份验证。
use Net::SSH2;
#Get $un and $pw as POST data.
my $ssh2 = Net::SSH2->new();
$ssh2->connect('localhost') or die $!;
if($ssh2->auth_password($un, $pw) ){
$c->session->{logged} = 1;
}
我不想存储会话密码。
稍后在流程中我需要由登录用户在服务器中执行一些命令。 所以在这一点上我再次需要密码才能进行ssh2身份验证 (执行可以在其他页面的流程中稍后执行)。 我的问题是,一旦我第一次进行身份验证,我可以为会话或用户存储任何内容(可能是私钥),以便第二次不要求密码。
答案 0 :(得分:0)
我认为你不能这样做。 Catalyst的Session可以存储用户数据,但您需要知道 Net :: SSH2是XS模块,因此,它的Net :: SSH2对象将是XS。 如果您将尝试存储连接的Net :: SSH2对象,您将获得核心转储。
Net :: SSH2 objet转储如下:
$VAR1 = bless( do{\(my $o = 137381360)}, 'Net::SSH2' );
您无法序列化/反序列化XS对象。您必须存储密码,或使用不同的身份验证机制,例如密钥身份验证。