我想限制登录用户的登录路径,
security.yml
security:
encoders:
Site\Bundle\AdminBundle\Entity\Users:
algorithm: md5
iterations: 0
encode_as_base64: false
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: [ ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH ]
providers:
in_memory:
memory:
users:
ryan: { password: ryanpass, roles: 'ROLE_USER' }
admin: { password: kitten, roles: 'ROLE_ADMIN' }
administrators:
entity: { class: SiteAdminBundle:Users , property: username}
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
secured_area:
pattern: ^/
anonymous: ~
http_basic:
realm: "Secured Demo Area"
form_login:
login_path: /login
check_path: /login_check
logout:
path: /logout
provider: administrators
access_control:
- { path: ^/admin/*, roles: ROLE_ADMIN }
- { path: /login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/*, role: IS_AUTHENTICATED_ANONYMOUSLY }
我的登录功能:
public function loginAction(Request $request)
{
$session = $request->getSession();
// get the login error if there is one
if ($request->attributes->has(SecurityContextInterface::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(
SecurityContextInterface::AUTHENTICATION_ERROR
);
} elseif (null !== $session && $session->has(SecurityContextInterface::AUTHENTICATION_ERROR)) {
$error = $session->get(SecurityContextInterface::AUTHENTICATION_ERROR);
$session->remove(SecurityContextInterface::AUTHENTICATION_ERROR);
} else {
$error = '';
}
// last username entered by the user
$lastUsername = (null === $session) ? '' : $session->get(SecurityContextInterface::LAST_USERNAME);
return $this->render(
'SiteSecurityBundle:Default:login.html.twig',
array(
// last username entered by the user
'last_username' => $lastUsername,
'error' => $error,
)
);
}
问题是它可以工作,例如,对于/admin,只有ROLE\u admin有访问权限,ROLE\u用户号。但是/login,如果我登录或不登录,我可以访问它,在symfony2开发工具中,我看到我是匿名的,我登录了stel。。。我没有主意
有许多方法可以限制用户对某些资源的访问。下面您将看到其中的两种方法:
1)安装了SensioFrameworkExtraBundle(包含在Symfony2全栈版本中),您可以像这样为控制器使用注释
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
class YourController extends Controller
{
/**
* @Security("is_granted('IS_AUTHENTICATED_ANONYMOUSLY')")
*/
public function loginAction(Request $request)
{
// ...
}
}
2)没有SensioFrameworkExtraBundle注释
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
class YourController extends Controller
{
public function loginAction(Request $request)
{
if (true === $this->get('security.context')->isGranted('ROLE_ADMIN')) {
throw new AccessDeniedException('Unable to access this page!');
# or you can do also a redirect instead of exception
return $this->redirect($this->generateUrl('homepage'));
}
// ...
}
}
正如这里和这里的文档所解释的
问题内容: 我有一个示例,尝试使用Symfony2和FOSUserBundle创建AJAX登录。我设置我自己和在我的文件。 这是课程: 这对于处理成功和失败的AJAX登录尝试都非常有用。但是,启用后-我无法通过标准表单POST方法(非AJAX)登录。我收到以下错误: 我希望自己的重写和重写仅对XmlHttpRequests(AJAX请求)执行,如果没有,则将执行交还给原始处理程序。 有没有办法做到
当使用Firebase身份验证匿名帐户时,它偶尔会在系统中创建一个新的用户ID,有时它会使用相同的用户ID。我真的希望每次都能创建相同的用户ID,这样匿名用户仍然可以在应用程序中维护相同的进度/数据。这实际上是我开始使用Firebase的原因。即使在重新启动应用程序等之后,我如何始终维护一个匿名帐户来保持相同的用户ID? 我希望用户每次以访客身份玩游戏时都能获得相同的ID。我看到有些应用程序在卸载
你好我按照这个教程:http://symfony.com/doc/current/cookbook/security/entity_provider.html My security.yml: 在数据库中,我有: 用户: 角色: 用户角色: 每次我尝试用DB中的一个用户登录时,我都会得到“坏凭据”。但是,如果我使用内存中定义的“test”用户登录,没有问题 我想这是我的安全问题。但我做错了什么?
应用程序类: application.yml:
一个元素可以按照HTML元素的嵌套方式包含其他元素,大多数情况下,框都是由显式定义的元素所生成的。 然而,当把文本直接添加到一个块容器元素中(不是包含在行内元素)时,即便没有为这些文本显式定义元素,它们也会生成框。 没有被元素显式包含的文本,称作匿名文本,因为没有与之关联的元素。把匿名文本所生成框,称作匿名框。匿名框分为两种,一种是匿名块框,另一种是匿名行内框。 当把文本直接添加到一个块容器元素中
匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。其语法形式如下: 这种形式的 new 语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。使用匿名类可使代码更加简洁、紧凑,模块化程度更高。 匿名类有两种实现方式: 继承一个类,重写其方法。 实现一个接口(可以是多个),实现其方法。 下面通过代码来说明。 程序的输出结果如下: 从输出结果可以看出,匿名内部类有