如何修改身份验证相关闪信的外观?
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 应用程序进行身份验证