我正在研究一个将Angular作为前端和Symfony作为后端的项目,目前我正在使用令牌系统进行身份验证,并且众所周知,这些步骤是:
- 为后端提供用户名和密码
- 生成令牌
- 使用
localStorage
保存客户端 - 每次将请求发送到后端
为了实现这一目标,我必须安装三个捆绑包:
-LexikjwtauthenticationBundle:用于创建令牌系统
-JwtrefreshtokenBundle:用于清爽令牌系统
-Nelmiocorsbundle:使用CORS请求
所以我的问题是,当我们可以使用Symfony的默认身份验证系统时,我们为什么要使用这些内容?!
如果我错了:
请纠正我我们可以简单地使用这些步骤,而不安装任何其他捆绑包:
- 为后端提供用户名和密码
- 使用Symfony的默认身份验证系统对用户进行身份验证(of配置防火墙后(
- 每次我们在控制器中发送请求时,我们都可以检查是否用户使用此Methode
$this->getUser();
记录(将如果未连接null(
对于CORS请求,我们可以简单地使用标题array('Access-Control-Allow-Origin'=> '*')
创建一个自定义响应:
class APIResponse extends Response
{
function __construct($content, $status = 201, array $headers = array('Access-Control-Allow-Origin' => '*', 'Content-Type' => 'application/json'))
{
if(is_array($content)) parent::__construct(json_encode($content), $status, $headers);
else throw new LogicException('The response must be an array, '.gettype($content).' given');
}
}
这只是一个想法,希望你们指向我的方向正确,并解释为什么我们应该在Symfony的默认身份验证系统上使用令牌。
您不能告诉您必须使用特定的解决方案。您可以选择想要的任何东西。
JWT最近真的很流行。很高兴知道JWT的工作原理。但是您不必使用JWT样式授权。
JWT对于拥有一千个注册用户的大型系统确实很强大,因为可以减少数据库使用(减少查询数(。这是因为令牌处理从Serwer侧移到客户端。
对于较小的系统,我更喜欢使用API-KEYS,会话令牌等。就像您写的一样