如何添加“记住我”登录功能 编辑该页面 警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.0,不再维护。 读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。 remember_me防火墙选项。防火墙配置需要一个密钥,用于加密饼干的内容。它也有几个选项的默认值是所示: YAML XML PHP 1 2 3 4 5 6 7 8 # app / config / security.yml防火墙:主要:remember_me:关键:“% %”秘密生命周期:31536000# 365天在几秒钟内路径:/域:~# $ _SERVER默认为当前域 1 2 3 4 5 6 7 8 9 10 11 < !- - -app/config/security.xml -->< /span><配置><防火墙><记得我关键=“% %”秘密一生=“31536000”< !- - -365年天在秒- - ->路径= " / "域= " "< !- - -Defaults to the current domain from $_SERVER -->< /span>/ >< /防火墙>< /配置> 1 2 3 4 5 6 7 8 9 10 11 12 13 / / app / config / security.php美元容器- >loadFromExtension (“安全”,数组(“防火墙”= >数组(“主要”= >数组(“remember_me”= >数组(“关键”= >“% %的秘密”,“一生”= >31536000,/ / 365天在几秒钟内“路径”= >' / ',“域”= >”,/ /默认为当前从$ _SERVER域))))); 这是个好主意,为用户提供选择使用或不使用记得我功能,因为它并不总是合适的。通常的方法是添加一个复选框登录表单。通过给复选框的名称_remember_me时,饼会自动设置复选框选中,用户成功登录。因此,特定的登录表单最终可能看起来像这样: 嫩枝 PHP 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 {# src / Acme / SecurityBundle /资源/视图/安全/ login.html。树枝#}{%如果错误%}<div>{{错误。消息}}< /div>{%endif%}<形式行动=”{{路径(login_check)}}”方法=“职位”><标签为=“用户名”>用户名:< /标签><输入类型=“文本”id=“用户名”的名字=“_username”价值=”{{last_username}}”/ ><标签为=“密码”>密码:< /标签><输入类型=“密码”id=“密码”的名字=“_password”/ ><输入类型=“复选框”id=“remember_me”的名字=“_remember_me”检查/ ><标签为=“remember_me”>让我登录< /标签><输入类型=“提交”的名字=“登录”/ >< /形式> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 < !- - -src/Acme/SecurityBundle/Resources/views/Security/login.html.php -->< /span>< ? php如果(美元错误):? ><div>< ? php回声美元错误- >getMessage ()? >< /div>< ? phpendif;? ><形式行动=“< ?php echo $视图(“路由器”)- >生成(login_check) ? > "方法=“职位”><标签为=“用户名”>用户名:< /标签><输入类型=“文本”id=“用户名”的名字=“_username”价值=“< ?php echo $ last_username ? > "/ ><标签为=“密码”>密码:< /标签><输入类型=“密码”id=“密码”的名字=“_password”/ ><输入类型=“复选框”id=“remember_me”的名字=“_remember_me”检查/ ><标签为=“remember_me”>让我登录< /标签><输入类型=“提交”的名字=“登录”/ >< /形式> 用户将自动登录在随后的访问而饼干仍然有效。 IS_AUTHENTICATED_ANONYMOUSLY——自动分配给一个用户在防火墙保护网站的一部分,但实际上没有登录。这仅仅是可能的如果已经允许匿名访问。 IS_AUTHENTICATED_REMEMBERED——自动分配给一个用户身份验证通过一个记得我的饼干。 IS_AUTHENTICATED_FULLY——自动分配给用户提供了他们的登录信息在当前会话。 您可以使用这些来控制访问超出了显式分配角色。 请注意 如果你有IS_AUTHENTICATED_REMEMBERED的角色,那么你也有IS_AUTHENTICATED_ANONYMOUSLY的角色。如果你有IS_AUTHENTICATED_FULLY角色,你也有其他两个角色。换句话说,这些角色代表三个级别的增加“强度”的认证。 您可以使用这些额外的角色更细粒度的控制访问一个网站的部分内容。例如,您可能想让你的用户能够查看自己的账户/账户当验证cookie但必须提供他们的登录细节能够编辑账户细节。为此,您可以使用这些角色获得特定的控制器操作。编辑操作的控制器可以获得使用服务上下文。 在以下示例中,只允许如果用户已经采取行动IS_AUTHENTICATED_FULLY的角色。 1 2 3 4 5 6 7 8 9 10 11 12 13 / /……使用ob娱乐下载\组件\安全\核心\异常\AccessDeniedException公共函数editAction(){如果(假= = = $这- >得到('安全。上下文”)- >isGranted('IS_AUTHENTICATED_FULLY')){扔新AccessDeniedException();}/ /……} 您还可以选择安装和使用可选的JMSSecurityExtraBundle控制器,它可以安全使用注释: 1 2 3 4 5 6 7 8 9 使用JMS\SecurityExtraBundle\注释\安全;/ * * *@ secure(角色= " IS_AUTHENTICATED_FULLY”) * /公共函数editAction(美元的名字){/ /……} 提示 如果你也有一个访问控制安全配置,需要用户有一个ROLE_USER角色为了访问的任何账户,然后你会有以下情况: 如果一个没有进行身份验证或匿名身份验证的用户试图访问帐户,用户将被要求进行身份验证。 一旦用户输入自己的用户名和密码,如果用户接收ROLE_USER角色每你的配置,用户将有IS_AUTHENTICATED_FULLY作用,并能够访问帐户中的任何页面部分,包括editAction控制器。 如果用户的会话结束,当用户返回到网站,他将能够访问每个账户页面,除了——没有被迫重新编辑页面。然而,当他试图访问editAction控制器,他将被迫认证,因为他不是,然而,充分验证。 确保服务的更多信息以这种方式或方法,明白了如何确保您的应用程序的服务或方法吗。 这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。