栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

symfony 用户登录验证身份流程

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

symfony 用户登录验证身份流程

symfony 用户登录验证身份流程

symfony中的用户身份验证 是通过防火墙进行的,如果请求信息中没有包含用户的身份信息,或者错误的用户信息,防火墙就会拦截请求,并根据配置跳转相关的页面,(404页面,登录页面等),或者其他的跳转方式。

如果是sf的第三方自带的防火墙类型的话,就是一下几种积木组成的。

1.Firewall listener 2.Token & Token Storage 3. Authentication provider 4.User provider 5.Entry pointer

a.Firewall listener(防火墙监听) 作用:检车用户是否需要做身份验证

首先判断Request对象里面是否包含用户的身份验证信息,如果不包含什么也不做;如果包含,他会将Request里的用户登录信息抽取出来,并创建一个Token .

例子:SymfonyComponentSecurityHttpFirewallBasicAuthenticationListener


b. Token & Token Storage(令牌和令牌存储) 作用:存装用户的信息token

 它分为两中token , 一种是包含用户待验证身份信息的 token,另外一种是包含验证过的用户身份信息的 token,两种可以使同一个对象,但区别在于 待验证 token 里注入的是用户名;验证过的 token 注入的是用户对象。Firewall listener 在创建好待验证 token 之后,用 AuthenticationManager 的 authenticate 方法尝试验证 token。《如果成功,authenticate 方法会返回验证过的 token。最后,将验证过的 token 放到 token storage 里面,就大功告成了》。

例子:SymfonyComponentSecurityCoreAuthenticationTokenUsernamePasswordToken


c.Authentication provider(身份验证提供者) 作用:用来处理AuthenticationManager委托的来处理验证的工作。

过程就是:先从待验证 Token 里拿出用户信息,通过 username,利用注入的 User provider 的 loadUserByUsername 方法获取到一个用户,并通过比对获取到的用户信息以及 token 里的用户信息的(比如比对密码),来判断用户是否登录正常。如果正常,创建一个新的 token 并将用户对象注入后返回它。当然如果信息有问题,则会抛出 AuthenticationException 异常。

SymfonyComponentSecurityCoreAuthenticationProviderDaoAuthenticationProvider


d.User provider(用户的供应商)作用:只用来查询用户,不验证用户

这个就像去健身房前台使用的电脑,通过提供额名字,可以从其他地方(不一定是数据库) 查到此名字对应的用户的去哪不信息

例子:SymfonyComponentSecurityCoreUserInMemoryUserProvider


e. Entry pointer(入口指针) 作用:定义需要用户认证时,或者用户身份失败时的处理方式。

定义了需要用户认证时,或者用户身份认证失败的时候的处理方式。Entry point 类的 start 方法也是处理 request 参数,返回 response,你可以在这里定义用户是直接显示 401 页面呢,还是跳转到登录页面(小提示:没有规定 401 页面是不可以显示登录表单的哦),还是只返回一个 WWW-Authenticate 的 HTTP 头。

例子:SymfonyComponentSecurityHttpEntryPointBasicAuthenticationEntryPoint

总结来源 原网址链接:

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

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

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