我有一个注销功能,在另一个项目中工作,但由于某种原因,在我目前正在处理的项目中不工作。看起来它只是刷新了页面。我查了Symfony的官方留档https://symfony.com/doc/current/security.html但无济于事。希望你们能帮我。
更新:Security.yml:
# To get started with security, check out the documentation:
# https://symfony.com/doc/current/security.html
security:
providers:
in_memory:
memory:
users:
beheerder:
password: admin
roles: 'ROLE_BEHEERDER'
access_control:
- { path: '^/beheerder/*', roles: [ROLE_BEHEERDER] }
encoders:
Symfony\Component\Security\Core\User\User: plaintext
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:
# activate different ways to authenticate
# https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
http_basic: ~
# https://symfony.com/doc/current/security/form_login_setup.html
#form_login: ~
logout:
path: security_logout
target: /
控制器:
<?php
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\ExpressionLanguage\Expression;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
class DefaultController extends Controller
{
//Functie om naar de homepagina te gaan met een redirect naar de homepagina van de gebruiker.
/**
* @Route("/", name="homepage")
*/
public function indexAction(Request $request, AuthorizationCheckerInterface $authorizationChecker)
{
if ($authorizationChecker->isGranted(new Expression('"ROLE_BEHEERDER" in roles')))
{
return $this->redirectToRoute('beheerder');
}
else
{
return $this->render('default/index.html.twig');
}
}
/**
* @Route("/beheerder", name="beheerder")
*/
public function beheerder(Request $request)
{
return new Response($this->renderView('beheerder/index.html.twig'));
}
/**
* @Route("/logout", name="security_logout")
*/
public function logoutAction(Request $request)
{
return new Response($this->renderView('logout.html.twig'), 401);
}
}
注销小枝:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>{% block title %}Overzicht{% endblock %}</title>
<link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
</head>
<body>
<p>Redirecting back....</p>
<script>
document.cookie = 'PHPSESSID=; Path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
window.location.href = '{{ url('homepage') }}';
</script>
</body>
</html>
编辑:我正在使用Symfony 3.4。当我进入页面 /logout它看起来像只是刷新页面。我可以看到它进入注销功能,但用户不会注销。
你还没有设置防火墙
main:
anonymous: ~
它应该看起来像main:anonymous:~secured_arena:pattern:^/beheerder
这意味着每个人都可以访问“主”防火墙,您应该限制该区域
当你有了它,然后只需添加到防火墙以下行
logout:
path: /logout
target: /
并定义 /logout路线,你已经做了。Symfony会自动注销。
您还需要指定验证器和检查路径检查https://symfony.com/doc/current/security/custom_password_authenticator.html
权限改造在你定义注销路径为IS_AUTHENTICATED_ANONYMOUSLY
这是错误的。
请删除-{path:'^/logout',角色:[IS\u AUTHENTICATED\u ANONYMOUSLY]}
或
编辑-{path:'^/logout',角色:[ROLE\u BEHEERDER]}
从Symfony安全文档:https://symfony.com/doc/3.4/security.html#logging-出去
请注意,在使用http基本身份验证防火墙时,没有真正的注销方法:唯一的注销方法是让浏览器停止在每次请求时发送您的姓名和密码。清除浏览器缓存或重新启动浏览器通常会有所帮助。一些web开发工具在这里可能也很有用。
您正在使用http basic,因此清除cookie将不起作用。因此,如果您想使用该代码,则需要实现不同的身份验证并停止使用http basic。
我正在尝试Laravel5.2中的简单注销功能,但我真的不明白我错在哪里。如果有人能帮忙,那就太好了。 这是路线 loginController方法: 视图中使用此功能的链接: 会话存储代码: AuthController构造函数: 当用户单击注销链接时,它会重定向到根页面,但不会真正破坏会话或注销。它不需要登录来查看页面(它应该这样做)。
我使用的是Laravel5.2框架,我已经使用命令创建了auth。我的AuthController中有以下内容: 这些在我的路线上。php文件: 登录/注册时,一切正常,但当我按下注销按钮时,没有任何变化,我仍然登录。我想要的是在单击注销按钮后重定向到auth/login视图。请帮忙。
我的问题和这里问的很相似 我使用的是Laravel 5.2 我的路线:列表 我的注销链接 注销链接位于标题中。刀身php文件。文件的位置为 我的路线。php 此路由位于中间件的外面 授权控制器。php 当“注销”按钮单击时,其按会话要求重定向并没有结束,因为若我通过URL访问,我仍然登录
完成注销后,Azure注销页面不会重定向用户。它只返回以下信息: 你注销了你的账户。关闭所有浏览器窗口是个好主意。 我尝试了不同的注销URL,我发现: > https://login.microsoftonline.com/MY_TENANT/oauth2/logout?post_logout_redirect_uri=https://micway.com.au/ https://login.mi
我的spring配置xml文件中有这个。 角色在登录时已正确验证。我有两个问题: > 在我的控制器中: 页面正确重定向并显示“注销成功”页面,但如果我再次将URL更改为转到“/欢迎”,它将显示该页面。它不应该显示403-拒绝访问页面吗?
我正在使用WSO2身份服务器5.0.0测试SAML SSO,其中两个PHP应用程序实例作为服务提供者(使用onelogin phpsaml)。我设法使单点登录工作,但现在我面临单点注销的问题。 当我从PHPApp1触发注销请求时,WSO2 IDP以注销响应进行响应,它似乎工作正常 WSO2 IDP触发对saml会话参与者的注销请求,在本例中是对PHPApp2的注销请求 PHPApp2处理注销请求,