[英]Simple login form with Symfony Security
I tried to do login form with this tutorial: http://symfony.com/doc/current/cookbook/security/form_login_setup.html 我尝试使用本教程进行登录表单: http : //symfony.com/doc/current/cookbook/security/form_login_setup.html
So, now my security.yml file looks like: 所以,现在我的security.yml文件看起来像:
security:
providers:
in_memory:
memory:
users:
ryan:
password: ryanpass
roles: 'ROLE_USER'
admin:
password: kitten
roles: 'ROLE_ADMIN'
encoders:
Symfony\Component\Security\Core\User\User: plaintext
firewalls:
login_firewall:
pattern: ^/login$
anonymous: ~
secured_area:
pattern: ^/
anonymous: ~
form_login:
login_path: login
check_path: login
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
Security Controller: 安全控制器:
class SecurityController extends Controller
{
/**
* @Route("/login", name="login")
*/
public function loginAction(Request $request)
{
$authenticationUtils = $this->get('security.authentication_utils');
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render(
'AppBundle:Security:login.html.twig',
array(
// last username entered by the user
'last_username' => $lastUsername,
'error' => $error,
)
);
}
}
So basically, it doesn't work properly. 所以基本上,它不能正常工作。 After sending login form nothing happens and I don't know why.
发送登录表后没有任何反应,我不知道为什么。 I think the configuration of the security is wrong.
我认为安全性的配置是错误的。 Could somebody help me?
有人能帮帮我吗? I have no idea what is wrong.
我不知道出了什么问题。
Change the check_path
to something else, like login_check
and also add the login_check
and logout
action to your controller: 将
check_path
更改为其他内容,例如login_check
,并将login_check
和logout
操作添加到控制器:
/**
* @Route("/login_check", name="login_check")
*/
public function loginAction()
{
// The security layer will intercept this request, else redirect to login page
$this->addFlash('warning', $this->get('translator')->trans('login_expired'));
return $this->redirect($this->generateUrl('login'));
}
/**
* @Route("/logout", name="logout")
*/
public function logoutAction()
{
// The security layer will intercept this request, else redirect to login page
$this->addFlash('warning', $this->get('translator')->trans('login_expired'));
return $this->redirect($this->generateUrl('login'));
}
Also make sure that the login_form does a post to the login_check
: 还要确保login_form为
login_check
:
<form id="loginForm" action="{{ path('login_check') }}" method="post">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.