- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 CGI::Session::Auth::DBI 中的示例和 CGI::Session::Auth页,我试图实现 _login
功能没有成功。我正在使用 Windows 7 和 Apache 2。
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI;
use CGI::Session;
use CGI::Session::Auth::DBI;
my $cgi = new CGI;
# using '.' directory for testing
my $session = new CGI::Session(undef, $cgi, {Directory=>'.'});
my $auth = new CGI::Session::Auth::DBI({
CGI => $cgi,
Session => $session,
DSN => 'dbi:mysql:dbname=foobar:host=localhost',
DBUser => 'foo',
DBPasswd => 'bar',
UserTable => 'cgi_auth_user' # auth_user already in use
});
print "Content-type: text/html\n\n";
if ($auth->_login("admin", "admin")) {
print "<p>login ok</p>";
} else {
print "<p>login fail</p>";
}
if ($auth->loggedIn) {
print "<p>logged in; go to <a href='index.pl'>index</a></p>";
} else {
print "<p>not logged in</p>";
}
渲染的输出是:
login ok
not logged in
如果我更改传递给
_login
的值到“foo”、“bar”(无效的用户名/密码),然后我得到这个渲染结果:
login fail
not logged in
我正在使用 '。'只是为了测试,因为我知道这是我可以写的目录。每次我运行代码时,
cgisess_
文件已创建(例如
cgisess_9fb493cc9155ee9dd2b18fddc38139d8
),但无论我是否使用正确的用户名,都会创建此文件。没有返回错误,但是
$auth->loggedIn
总是假的。
_login
是虚拟的,听起来 DBI 模块会覆盖它,但我不确定。
$auth->authenticate()
在调用
$auth->loggedIn
之前但这没有效果。我也试过使用
$auth->authenticate()
和
$auth->loggedIn
成功登录后在另一个上,但我得到相同的结果。不管我做什么,
$auth->loggedI
总是假的。
cgisess
/
中的文件而不是当前目录。
CREATE TABLE IF NOT EXISTS `cgi_auth_user` (
`userid` char(32) collate utf8_unicode_ci NOT NULL,
`username` varchar(30) collate utf8_unicode_ci NOT NULL,
`passwd` varchar(30) collate utf8_unicode_ci NOT NULL default '',
PRIMARY KEY (`userid`),
UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `cgi_auth_user` (`userid`, `username`, `passwd`) VALUES
('325684ec1b028eaf562dd484c5607a65', 'admin', 'admin'),
('ef19a80d627b5c48728d388c11900f3f', 'guest', 'guest');
再说一次,如果
_login
正在返回
true
使用有效的用户名和密码,那么我会假设用户 ID 是有效的......不是吗?
最佳答案
尝试输出 $session->header()
的结果作为你输出的第一件事。这应该设置您的 cookie 并加载现有 session ,而不是每次都创建一个新 session 。
另外,_login()
只对数据库进行认证,不修改$auth
目的。使用 authenticate()
,您需要使用 param()
定义用户名和密码您的$cgi
的功能目的。您需要设置字段log_username
和 log_password
对于authenticate()
发挥作用。
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI;
use CGI::Session;
use CGI::Session::Auth::DBI;
my $cgi = CGI->new;
my $session = new CGI::Session(undef, $cgi, {Directory=>'/tmp'});
my $auth = new CGI::Session::Auth::DBI({
CGI => $cgi,
Session => $session,
DSN => 'dbi:mysql:dbname=foobar:host=localhost',
DBUser => 'foo',
DBPasswd => 'bar',
UserTable => 'cgi_auth_user'
});
print $session->header();
$cgi->param('log_username', 'admin');
$cgi->param('log_password', 'admin');
$auth->authenticate();
if ($auth->loggedIn) {
print "<p>logged in; go to <a href='index.pl'>index</a></p>";
} else {
print "<p>not logged in</p>";
}
关于perl - 为什么在我使用 CGI::Session::Auth::DBI 时 $auth->loggedIn 永远不会为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2039163/
我的代码曾经可以工作,几天后因为 cloud9ide 不能正常工作而没有碰它,它停止工作了。我总是在 everyauth 模块中得到一个未定义的 req.loggedin。我做了一个简单的: app.
我试图在 LoginView LoggedIn 模板中获取 LoginName 控件,尽管有几种方法,代码仍然无法运行。 我希望将默认用户名更改为客户名称。 代码如下:
对这里的初学者以及一般的 SPA 使用react。我试图让我的登录状态在我的应用程序中保持不变,但当用户刷新页面时我会遇到困难。目前,我的登录表单中有一个方法,可以调用服务器进行登录,并且我猜会收到一
我正在尝试创建一个导航栏,当用户已经登录时显示注销,反之亦然。但按钮已完全停止显示。 这让我很烦恼。我不知道我哪里错了。 我添加了 app.component.ts 文件。 auth.service.
当我从 nuxtjs 发送登录请求时,我在后端使用 laravel/passport 进行身份验证,在前端使用 nuxtjs,如果登录成功,我会返回 token 和用户信息作为响应,然后用户将重定向到
当我从 nuxtjs 发送登录请求时,我在后端使用 laravel/passport 进行身份验证,在前端使用 nuxtjs,如果登录成功,我会返回 token 和用户信息作为响应,然后用户将重定向到
我正在编写一个库存管理系统。我基本上已经完成了。这是非常基本的,但可以完成工作。 所以现在我正在研究它的外观。我在页面顶部的 div 中放置了一个搜索框/查询。搜索有效。但它只在列出的页面上显示结果。
我使用 $_SESSION 变量让用户登录。他们可以免受注入(inject)攻击吗? 如果您想查看我的脚本以检查漏洞,请点击这里:http://pastebin.com/raw/7iiSSjKP 感谢
我试图从数据库获取数据,但出现以下错误 { message: 'Requests can only be made in the LoggedIn state, not the SentClientR
在 ASP.Net 中,我试图在 Login 控件的 LoggedIn 事件中获取刚刚登录的用户的 UserId(即用户 GUID)。也就是说,我想在用户移动到下一页之前获取 UserId。这是我正在
使用 CGI::Session::Auth::DBI 中的示例和 CGI::Session::Auth页,我试图实现 _login功能没有成功。我正在使用 Windows 7 和 Apache 2。
前提是我有以下使用 Sequelize 的更新语句 return models.UnitPlant.findOne( { where:
我很生气为什么 HttpContext.Current.User.Identity.IsAuthenticated 在登录控件的 LoggedIn 事件中返回 false? 我输入了正确的用户名和密码
我刚开始学习 NuxtJS,我想通过 auth 模块为 Nuxt 实现身份验证。 我不知道为什么,但是使用 loginWith 登录似乎可以正常工作,在 vue 文件上我可以获取有关已登录用户的数据,
当使用包 tedious 连接到 MSSQL 时,我的请求测试出现以下错误: 'Requests can only be made in the LoggedIn state, not the Sen
我正在尝试使用 this python api-wrapper在 Minds.com 上发表评论。 但是,它似乎没有发送评论和错误:(我仍然不知道如何在这里发布堆栈跟踪,但我在这里有它 https:/
我是一名优秀的程序员,十分优秀!