如何修改身份验证相关闪信的外观?

Posted

技术标签:

【中文标题】如何修改身份验证相关闪信的外观?【英文标题】:How to modify the appearance of auth related flash messages? 【发布时间】:2015-05-27 14:11:31 【问题描述】:

我没有运气尝试将 AuthError 上的 Flash 元素从默认更改为错误?

我只是想看看我是否可以改变它,但现在它把我逼到了墙角,因为我似乎无法改变它?

这就是我在 AppController 中加载身份验证的方式,

    $this->loadComponent('Auth', [
        'authError' => 'Did you really think you are allowed to see that? -2',
        'authenticate' => [
            'Form' => [
                'fields' => ['username' => 'email', 'password' => 'password']
            ]
        ],
        'loginAction' => [
            'controller' => 'Users',
            'action' => 'Login'
        ],
        'loginRedirect' => [
            'controller' => 'Pages',
            'action' => 'LoginPage'
        ],
        'logoutRedirect' => [
            'controller' => 'Pages',
            'action' => 'HomePage'
        ]
    ]);

因此,当我转到不允许的页面时,它会显示 authError 消息,但使用 Element/Flash/default.ctp 中的任何类/ID 我想将其更改为与 error.cpt 使用相同

我已经调试了 Auth 组件,有一个 'flash' 设置,尝试设置它,但它不起作用?

那么如何更改 authError 以使用不同的 Flash 布局?

谢谢,

【问题讨论】:

当你尝试某件事时,请始终展示那是什么,这样人们就可以告诉你你是否做错了什么,而不必解释一切以希望他们不要重复你的所作所为已经试过了。 【参考方案1】:

如您所见,auth 消息默认使用 default.ctp 元素,并且可以在直接渲染时配置 flash 元素。要全局影响这一点,您可以改为配置组件。

如果您只想更改类名,则可以使用flash 配置选项params 设置中的class 参数:

$this->loadComponent('Auth', [
    // ...
    'flash' => [
        'params' => [
            'class' => 'some-custom-class'
        ]
    ]
]);

如果您想使用不同的元素,例如 error.ctp 之一,只需使用 element 设置来指定其名称

    'flash' => [
        'element' => 'error'
    ]

另请参阅Cookbook > Controllers > Components > Authentication > Configuration Options

【讨论】:

谢谢,这样更好:) 那行得通! - 我试过 'flash' => ['error'] , 'flashElement' => ['error'] 但不是你刚刚给我的选项!你知道,我一直在阅读文档(我认为 Cakephp 有快速的好文档)但我一定错过了这一点。非常感谢【参考方案2】:

我想我已经找到了解决办法。

好像当我打印$this->Flash->render('auth');

此时我需要将其更改为$this->Flash->render('auth',['element' => 'error']);

如果有人知道更好的方法,请告诉我

【讨论】:

【参考方案3】:

在 Cakephp 3 中,您可以为 flash 错误定义元素名称 -

$this->loadComponent('Auth', array(
    'authorize'=> 'Controller',
    'flash' => array(
        'element' => 'error'
    ),
    'authError' => 'Your session expired, please login again',
    'logoutRedirect' => array(
        'controller' => 'Users',
        'action' => 'login',
        'prefix' => false
     )
));

和 error.ctp 在 - \src\Template\Element\Flash\error.ctp

【讨论】:

以上是关于如何修改身份验证相关闪信的外观?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3 Auth 外观正在更改为默认的经过身份验证的用户

如何使用 Web API 来对 MVC 应用程序进行身份验证

如何使用 Web API 来对 MVC 应用程序进行身份验证

Django rest framework 身份和权限验证

任天堂游戏平台如何绑定二次验证码_两步验证_身份验证?

Django 如何在第一次迁移时制作与用户、身份验证、组、会话等相关的表?