相关疑难解决方法(0)

如何使用BASIC身份验证从Web站点注销用户?

如果用户使用基本身份验证,是否可以从网站注销用户?

杀戮会话是不够的,因为一旦用户通过身份验证,每个请求都包含登录信息,因此用户下次使用相同的凭据访问站点时会自动登录.

到目前为止,唯一的解决方案是关闭浏览器,但从可用性的角度来看,这是不可接受的.

authentication http basic-authentication

259
推荐指数
12
解决办法
19万
查看次数

通过PHP进行HTTP身份验证注销

注销HTTP身份验证保护文件夹的正确方法是什么?

有一些解决方法可以实现这一点,但它们具有潜在的危险性,因为它们可能是错误的,或者在某些情况/浏览器中不起作用.这就是为什么我正在寻找正确和干净的解决方案.

php authentication .htaccess password-protection http-headers

149
推荐指数
8
解决办法
11万
查看次数

使用HTTP基本身份验证时将用户注销

我希望用户能够通过HTTP基本身份验证模式登录.

问题是我还希望他们能够再次注销 - 奇怪的是,浏览器似乎并不支持.

这被认为是一种社交黑客风险 - 用户将其机器解锁并且浏览器打开,而其他人可以轻松地访问该网站.请注意,仅关闭浏览器选项卡不足以重置令牌,因此用户可能很容易错过.

所以我想出了一个解决方法,但这是一个完全的问题:

1)将它们重定向到Logoff页面

2)在该页面上激活一个脚本到ajax加载另一个带有伪凭证的页面:

$j.ajax({
    url: '<%:Url.Action("LogOff401", new { id = random })%>',
    type: 'POST',
    username: '<%:random%>',
    password: '<%:random%>',
    success: function () { alert('logged off'); }
});
Run Code Online (Sandbox Code Playgroud)

3)应该总是第一次返回401(强制传递新凭据),然后只接受伪凭证:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LogOff401(string id)
{
    // if we've been passed HTTP authorisation
    string httpAuth = this.Request.Headers["Authorization"];
    if (!string.IsNullOrEmpty(httpAuth) &&
        httpAuth.StartsWith("basic", StringComparison.OrdinalIgnoreCase))
    {
        // build the string we expect - don't allow regular users to pass
        byte[] enc = Encoding.UTF8.GetBytes(id + ':' + id);
        string expected …
Run Code Online (Sandbox Code Playgroud)

basic-authentication logout www-authenticate

23
推荐指数
1
解决办法
2万
查看次数

如何注销可在Google Chrome中运行的HTTP身份验证(htaccess)?

我有一个Firefox和IE的解决方案,但我没有找到任何谷歌Chrome的解决方案.

有没有办法在谷歌浏览器中做到这一点?

.htaccess google-chrome http-authentication

7
推荐指数
2
解决办法
1万
查看次数

Chrome的HTTP BASIC身份验证注销问题

我使用以下方法从使用基本HTTP身份验证的HTTP服务器注销.这适用于IE和FireFox.但是对于Chrome,我甚至可以使用错误的用户名和密码来获取html文件.

在Chrome中,流程是,我收到"**********失败***********"错误,然后显示请求的页面(some_server_file.html).

但是在IE/Chrome中,流程是,我得到"**********失败***********"错误,然后登录对话框提示输入凭证.

无论如何,即使第一次请求失败并且凭据错误,Chrome也会发送正确的用户名和密码.

任何人都可以修复Chrome问题吗?

function logout() {
    jQuery.ajax({
            type: "get",
            url: "some_server_file.html",
            async: false,
            username: "wronguser",
            password: "wrongpass",
            headers: {"Authorization": "Basic xxx"}
        })
        .success(function () {
            console.log("********** Success ***********");
        })
        .fail(function () {
            console.log("********** Failed ***********");
        });
    return false;
}
Run Code Online (Sandbox Code Playgroud)

谢谢

html javascript jquery google-chrome http

6
推荐指数
1
解决办法
1916
查看次数

CakePHP 2.3.2 BasicAuthentication无效

我尝试了位于http://book.cakephp.org/2.0/en/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application的"Simple Acl受控应用程序1和2"教程. HTML.

执行此操作后,我尝试激活BasicAuth而不是FormAuth.

我在我的UsersController中重新实现了login()函数,如下所示:

public function login() {
if ($this->Auth->login()) {
        return $this->redirect($this->Auth->redirect());
    } else {
        $this->Session->setFlash('Not able to login');
    }
}
Run Code Online (Sandbox Code Playgroud)

并将我的AppController中的$ components变量更改为以下内容:

public $components = array(
    'Acl',
    'Auth' => array(
        'authorize' => array(
            'Actions' => array('actionPath' => 'controllers')
        ),
        'authenticate' => array('Basic')
    ),
    'DebugKit.Toolbar',
    'Session'
);
Run Code Online (Sandbox Code Playgroud)

BasicAuth"弹出窗口"按预期显示,但是当我尝试登录时,它会在无限循环中重新启动.除了包含DebugKit之外,我在完成教程后没有做任何改动.

我错过了什么?我希望有人可以帮助我,因为我想在下一个项目中使用CakePHP编码!

更新

AppController的

public function beforeFilter() {
    //Configure AuthComponent
    $this->Auth->allow('display');
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
    $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login'); …
Run Code Online (Sandbox Code Playgroud)

cakephp basic-authentication cakephp-2.3

5
推荐指数
1
解决办法
4853
查看次数