-1
A
回答
1
也许是这样的:
Pesudocode:
generate hashed link that is unique to user (e.g. md5(email+timestamp+salt))
store hash for user in db
Send link to user in email (same email as used in hash)
when user accesses site using link:
fetch hash part from link
match hash against database
if match is found, authenticate, else fail
注意,我不能保证,这是通过任何方式做(不知道如果它甚至有可能是一个安全的方式只有通过链接进行身份验证时才是安全的)。只是一些想法让你走。
2
您可能想要查看FOSUserBundle,它内置了很多用于管理用户的内容。
我们使用类似的技术来注册用户。下面是一些基本的代码(你需要用错误处理和实际发现基于URL参数的用户的方法填写:
/**
* @Route("/register/activate/{hash}/{oId}", requirements={"hash"="\w+", "oId"="\d+"}, name="register_byhash")
* @Method({"GET"})
* @Template()
*/
public function registerByHashAction($hash, $oId)
{
$um = $this->container->get('fos_user.user_manager');
$user = $um->findUserByHash($hash, $oId); // You will need to supply a method that finds the user and checks the hash
// Mark the user as now active and save the user here
$providerKey = $this->container->getParameter('fos_user.firewall_name');
$token = new UsernamePasswordToken($user, null, $providerKey, $user->getRoles());
$this->container->get('security.context')->setToken($token);
$url = $this->container->get('router')->generate('welcome');
return new RedirectResponse($url);
}
0
解决这个最好的办法是实现一个自定义身份验证提供者的身份验证供应商负责用户身份验证,使用您希望几乎一切:可能是一个cookie(记得我为例),表单数据,或者在你的情况,查询字符串参数
你需要:
- 用于存储认证参数的自定义令牌可以管理令牌和验证用户
- 一些胶这些组件装配到安全系统之三
- 自定义的认证供应商(意味着你需要定义一个工厂,某些配置)。
使用身份验证提供程序,您将有机会将记录的用户分配给自定义安全角色(因为记住我的功能),因此您可以将登录用户与“自动登录”用户区分开来。如果要限制自动登录的用户可以执行的操作(例如,您可能希望仅对某个特定操作进行身份验证),这可能非常有用。
有大约自定义身份验证提供正式菜谱食谱:
http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html
我已经做了相当多,你需要什么,在screenfony.com博客中写道一下:
http://www.screenfony.com/blog/symfony-custom-authentication-provider
相关问题
- 1. 身份3.0电子邮件验证
- 2. 身份验证电子邮件PHP(CodeIgniter)
- 3. 身份验证电子邮件PHP
- 4. 电子邮件身份验证
- 5. Firebase身份验证连接电子邮件与电话
- 6. 来自链接的电子邮件验证php
- 7. laravel 5.2电子邮件身份验证条件验证
- 8. Firebase身份验证的电子邮件验证
- 9. Laravel 4使用电子邮件和身份验证进行身份验证
- 10. django社交身份验证和电子邮件验证
- 11. 验证用户电子邮件身份验证
- 12. 生成电子邮件验证链接
- 13. 通过电子邮件验证链接
- 14. 使用Windows身份验证连接到Exchange电子邮件
- 15. Firebase电话身份验证和链接
- 16. 通过电子邮件链接对用户进行身份验证
- 17. Firebase电子邮件身份验证iOS:“电子邮件格式不正确”
- 18. Symfony2身份验证/使用电子邮件登录而不是用户名
- 19. 在android中无需身份验证的电子邮件
- 20. 使用AWS Cognito的电子邮件和Google身份验证
- 21. 没有电子邮件和密码的身份验证。
- 22. 发送电子邮件没有在android中的身份验证
- 23. 在Magento中获取电子邮件的身份验证
- 24. ERP中的电子邮件身份验证
- 25. 使用Firebase的Google身份验证电子邮件作用域
- 26. Django和sqlite的电子邮件身份验证
- 27. Django的 - 身份验证,以确认电子邮件注册
- 28. 带有电子邮件地址的WebApi Facebook身份验证
- 29. 身份验证php邮件
- 30. 通过电子邮件链接进行自动验证
你还做了什么?你的问题太普通了,如果没有更多的规范就很难回答。 –