我需要在登录检查后禁用重定向,因为我只需要获取登录成功与否.提交/ login_check后url给我正确的数据,但保持重定向到/ login(失败时).
之后/ login是空白的.
我正在尝试使用extjs 4设置登录表单,所以我需要通过ajax post请求来验证.login_check应该进行身份验证,创建用户会话并返回它是成功还是失败,但不在任何地方转发.
我的login.html.twig看起来像:
{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
{ success:true }
{% else %}
{ success: false }
{% endif %}
Run Code Online (Sandbox Code Playgroud)
并在security.yml:
firewalls:
main:
form_login:
provider: fos_userbundle
failure_path: null
failure_forward: false
Run Code Online (Sandbox Code Playgroud) 我已经实现了在Symfony2中记住我的功能.当我使用"记住我"框登录时,会创建名为"REMEMBERME"的cookie.如果我关闭浏览器并在数小时后打开它,那么该cookie也可用.但是当我加载我的应用程序的主页时,cookie会自动删除,我看不到用户登录.有人能解释我删除cookie的原因吗?
remember_me:
key: qwerty
lifetime: 604800
path: /
domain: ~
Run Code Online (Sandbox Code Playgroud)
这是我的security.yml文件部分
编辑:我还没有找到这个问题的解决方案......
EDIT2:现在遇到了新问题.REMEMBERME cookie根本没有设置.怎么解决这个?
已解决:见下面的答案
我遇到的问题是,当用户在登录页面中更改语言时 - 它可以工作,但在用户登录后 - 它又恢复为默认状态.如何在登录前保持同一语言用户的选择,登录后留下来?我已经尝试在stackoverflow上查找,但无法找到任何工作结果.
security.yml:
security:
encoders:
AppBundle\Entity\User:
algorithm: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_PREMIUM
ROLE_PREMIUM: ROLE_USER
providers:
our_db_provider:
entity:
class: AppBundle:User
property: email
in_memory:
memory: ~
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: ~
form_login:
#galima nurodyti kur nukreipia loginas
login_path: login
check_path: login
csrf_token_generator: security.csrf.token_manager
logout:
path: /logout
pattern: ^/
http_basic: ~
provider: our_db_provider
access_denied_url: homepage
Run Code Online (Sandbox Code Playgroud)
使用routing.yml
app:
resource: "@AppBundle/Controller/"
type: annotation …Run Code Online (Sandbox Code Playgroud) 我们的项目使用FOSUserBundle和Symfony 2.5.我们需要在登录后向用户会话添加自定义数据,该数据驻留在数据库中并且是动态的,但应该在所有模板和应用程序内的任何位置访问.
我正在考虑LoginManager.php从/ user-bundle/Security覆盖该类,但我也不完全确定这是否是最好的选择.
看起来这个logInUser()方法是添加我们的自定义更改的地方,因为它实际上设置了令牌,但是再次,如果有更聪明的方法,我肯定会使用它.