栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

自动注册后用户认证

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自动注册后用户认证

Symfony 4.0

此过程尚未从symfony
3更改为4,但是这里是使用新推荐的AbstractController的示例。无论是

security.token_storage
session
服务注册在父
getSubscribedServices
方法,所以你不要有添加这些在你的控制器。

use SymfonyComponentSecurityCoreAuthenticationTokenUsernamePasswordToken;use SymfonyBundleframeworkBundleControllerAbstractController;use YourNameSpaceUserBundleEntityUser;class LoginController extends AbstractController{    public function registerAction()    { $user = //Handle getting or creating the user entity likely with a posted form        $token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());        $this->container->get('security.token_storage')->setToken($token);        $this->container->get('session')->set('_security_main', serialize($token));        // The user is now logged in, you can redirect or do whatever.    }}

Symfony 2.6.x-Symfony 3.0.x

从symfony 2.6开始

security.context
,不推荐使用
security.token_storage
。控制器现在可以简单地是:

use SymfonyComponentSecurityCoreAuthenticationTokenUsernamePasswordToken;use SymfonyBundleframeworkBundleControllerController;use YourNameSpaceUserBundleEntityUser;class LoginController extends Controller{    public function registerAction()    { $user = //Handle getting or creating the user entity likely with a posted form        $token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());        $this->get('security.token_storage')->setToken($token);        $this->get('session')->set('_security_main', serialize($token));    }}

尽管不推荐使用此功能

security.context
,但仍可以向后兼容,因此仍可以使用。只需准备为Symfony 3更新它

您可以在此处阅读有关2.6更改的更多信息:https
:
//github.com/symfony/symfony/blob/2.6/UPGRADE-2.6.md

Symfony 2.3.x版

要在symfony 2.3中实现此目的,您不再可以仅在安全上下文中设置令牌。您还需要将令牌保存到会话中。

假设安全文件带有防火墙,例如:

// app/config/security.ymlsecurity:    firewalls:        main: //firewall settings here

和控制器动作也类似:

use SymfonyComponentSecurityCoreAuthenticationTokenUsernamePasswordToken;use SymfonyBundleframeworkBundleControllerController;use YourNameSpaceUserBundleEntityUser;class LoginController extends Controller{    public function registerAction()    { $user = //Handle getting or creating the user entity likely with a posted form        $token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());        $this->get('security.context')->setToken($token);        $this->get('session')->set('_security_main',serialize($token));        //Now you can redirect where ever you need and the user will be logged in    }}

对于令牌的创建,您将需要创建一个

UsernamePasswordToken
,它接受4个参数:用户实体,用户凭据,防火墙名称,用户角色。您无需提供用户凭据即可使令牌有效。

security.context
如果您要立即重定向,我不是100%确定必须在上设置令牌。但这似乎没有伤害,所以我离开了。

然后是重要的部分,设置会话变量。变量命名约定

_security_
后跟您的防火墙名称,在这种情况下
main
_security_main



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568628.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号