繁体   English   中英

如何通过URL登录symfony

[英]How to login into symfony by URL

我在菜谱上研究了安全性的相关章节,最接近的部分是如何使用API​​密钥对用户进行身份验证 我不确定是否可以通过URL登录synfony。 我尝试开发一种允许登录的服务,并且我想使用如下网址:

mysite.com/login/user/password/token

在制作完整代码之前,我尝试进行测试,并确保一切正常,然后在控制器的同一代码中将带有值的var传递给我:

$_username="user";
$_password="password";

$this->redirect($this->generateUrl('subscriber_login_check'));

if ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
    $error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR);
} else {
    $error = $session->get(SecurityContext::AUTHENTICATION_ERROR);
    $session->remove(SecurityContext::AUTHENTICATION_ERROR);
}

当我尝试在控制器上执行此操作时,出现以下错误:

找不到路径“ / login_check /”的控制器。 也许您忘了在路由配置中添加匹配的路由?

我不知道是否需要在其他文件中添加其他内容,或者无法这样做。

谢谢

我可以找到一种解决方案来实现使用URL的登录,例如:mysite.com/user/password。

这是代码:

$path_info = $request->getPathInfo();
$router_parts = explode("/", $path_info);
$routerAux = $router_parts[1];
$routerAux2 = $router_parts[2];
if ($routerAux != ""){
    $_username=$routerAux;
    $user = $em->getRepository('myBundle:Entity')->findOneBy(array('field' => $_username));
    if($user){
        $token = new UsernamePasswordToken($user, $user->getPassword(), "public", $user->getRoles());
        if($token){
            if ($routerAux2  != ""){
                $_password=$routerAux2;
                $pass = $user->getPassword();
                $pass1 =""; 
                $factory = $this->get('security.encoder_factory');
                        $encoder = $factory->getEncoder($user);
                        $pass1 = $encoder->encodePassword($_password, $user->getSalt());
                if($pass==$pass1){
                    $var= 1;
                        }
                    }
                }
            }
        }     
    }
    return $this->render('Bundle:Pages:page.html.twig',array('var'=>$var));
}

基本上,该服务是通过按URL发送用户名密码 ,并首先在我的数据库中找到用户名来实现的,然后如果该用户存在,则获得密码 由于密码已加密 ,因此将继续加密过去的密码URL的值。 一旦加密了值,就执行两个值之间的比较,如果两个值相等,则返回true,否则返回false。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM