Magento API REST客户未重定向到身份验证页面

时间:2014-06-02 11:02:12

标签: api magento authentication redirect

我正在尝试通过客户帐户访问产品。为此,我使用了来自oauth_customer.php magento文档页面的示例代码。
Everything is okay and working fine; but the thing I am facing is that whenever I login as customer after successful login page redirects to the Customer Dashboard instead of redirecting to the Authentication URL.为此,我必须再次手动通过URL链接,因此它会重定向到“身份验证”页面,并在身份验证后显示我想要的内容。
我还尝试从链接中的示例代码扩展帐户控制器: https://docs.google.com/file/d/0BzCDl5a0zmSVdWdFMG9jMTB1TXM/edit?pli=1
但仍然没有运气。无论如何在登录后再次制作一个回调网址,就像我们在管理员身份验证方面做的那样?

4 个答案:

答案 0 :(得分:1)

最后我自己找到了解决方案。我决定在这里发帖,所以它可能对某人有帮助。以及通过以下示例代码:https://docs.google.com/file/d/0BzCDl5a0zmSVdWdFMG9jMTB1TXM/edit?pli=1我能够获得重定向网址。但重定向路径移动到404页面,因为重定向将重定向链接添加到站点URL。重定向到网址的代码是$this->_redirectUrl($session->getBeforeAuthUrl(true));
我将此代码更改为header( "refresh:1;url=".$session->getBeforeAuthUrl(true));,因此它已成功重定向到“授权”页面。我假设magento需要几毫秒来创建它的cookie。所以我给它添加了一些刷新时间。这是AccountController类代码: {yourmagento} / app / code / community / Chalkfy / OAuthRedirect / controllers / AccountController.php

<?php

require_once 'Mage/Customer/controllers/AccountController.php';
class Chalkfly_OAuthRedirect_AccountController  extends Mage_Customer_AccountController {
    protected  function  _loginPostRedirect()
    {
        $session = $this->_getSession();
        // if this redirect is a result of the OAuth process, force the redirect
        if(stristr($session->getBeforeAuthUrl(),"oauth/authorize?oauth_token=") == 0 )
        {
            echo "Redirecting Please Wait..";
            // Redirect to the URL after get
            header( "refresh:1;url=".$session->getBeforeAuthUrl(true));

            // $this->_redirect($session->getBeforeAuthUrl(true));

        }
        else {
            parent::_loginPostRedirect();
        }


    }


}

答案 1 :(得分:1)

使用Oauth时,oauth使用者登录表单会重定向到customer / account / loginPost。

loginPost函数会将您重定向到customer / account / login,因为缺少参数formkey。

只需在表格标记末尾的app / design / frontend / package / theme / template / oauth / authorize / form / login.phtml中添加:

<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />

添加此项后,重定向将正常工作。在Magento CE 1.9.0.0,EE 1.14.1.x中进行了测试

答案 2 :(得分:0)

您可以覆盖控制器或创建观察者。

以下链接可解决您的问题:http://blog.belvg.com/magento-tips-how-to-redirect-a-user-to-other-page-than-his-account-page-after-login-in-magento.html

答案 3 :(得分:0)

正如bas_van_poppel所说,通过将表单键添加到适当的phtml中,您可以摆脱重定向到常规登录页面。

为了避免重定向到信息中心页面并重定向到您的应用,您需要在setAfterAuthUrl上的_initForm方法中移除对app/code/core/Mage/Oauth/controllers/AuthorizeController.php的调用:

    /** @var $helper Mage_Core_Helper_Url */
    $helper = Mage::helper('core/url');
    $session // We don't want this: ->setAfterAuthUrl(Mage::getUrl('customer/account/login', array('_nosid' => true)))
            ->setBeforeAuthUrl($helper->getCurrentUrl());

成功登录后,Magento会将客户重定向到客户会话中的after_auth_url值,如果未指定该值,则会将您重定向到before_auth_url的值。

这仅用于说明目的,您应该遵循最佳实践来覆盖此核心控制器。