如何在 Symfony3 上通过令牌共享的页面实现安全性
How to implement security on a page shared by token on Symfony3
需要:
我需要为我的 Symfony3 应用程序的 IS_AUTHENTICATED_ANONYMOUSLY
用户共享一个 "client" 页面。
实施此类功能的最佳做法是什么?
我的想法:
security.yaml
中的特定访问控制
access_control:
- { path: {regex with token?}, roles: IS_AUTHENTICATED_ANONYMOUSLY }
用于存储令牌的令牌实体
findOnBy 使用传入的令牌 url
if(null === $token){
throw new NotFoundHttpException('Page not found');
}
问题:
- 正则表达式不起作用什么是对应的正则表达式
case/{token}
?
- 感觉这个方法可以,但是不是很有效
在安全要求方面。我的想法是否足以管理
此功能的安全性?什么是更好的做法?
将身份验证移到您的控制器之外,如果令牌无效,return 一个适当的 "not authorized" 异常。
基本上您需要创建 AuthenticatorInterface
的实现,这通常通过扩展 AbstractGuardAuthenticator
来完成,如 here 所述。
在您的 supports()
方法中,您可能会检查该令牌是否存在,并且该路由可能是您真正想要的路由 protect/authenticate。
需要:
我需要为我的 Symfony3 应用程序的 IS_AUTHENTICATED_ANONYMOUSLY
用户共享一个 "client" 页面。
实施此类功能的最佳做法是什么?
我的想法:
security.yaml
中的特定访问控制access_control:
- { path: {regex with token?}, roles: IS_AUTHENTICATED_ANONYMOUSLY }
用于存储令牌的令牌实体
findOnBy 使用传入的令牌 url
if(null === $token){ throw new NotFoundHttpException('Page not found'); }
问题:
- 正则表达式不起作用什么是对应的正则表达式
case/{token}
? - 感觉这个方法可以,但是不是很有效 在安全要求方面。我的想法是否足以管理 此功能的安全性?什么是更好的做法?
将身份验证移到您的控制器之外,如果令牌无效,return 一个适当的 "not authorized" 异常。
基本上您需要创建 AuthenticatorInterface
的实现,这通常通过扩展 AbstractGuardAuthenticator
来完成,如 here 所述。
在您的 supports()
方法中,您可能会检查该令牌是否存在,并且该路由可能是您真正想要的路由 protect/authenticate。