我在我的Catalyst::Plugin::Authentication应用中使用Catalyst进行用户身份验证,我希望能够更改用户身份验证时使用的用户名字段(目前默认为用户名) 。这是我目前的设置:
#used for user authentication
__PACKAGE__->config(
authentication => {
default_realm => 'users',
realms => {
users => {
credential => {
class => 'Password',
password_field => 'password',
password_type => 'self_check'
},
store => {
class => 'DBIx::Class',
user_model => 'DB::User',
role_relation => 'roles',
role_field => 'name',
}
}
}
}
);
如您所见,只需设置password_field
,即可设置密码字段的名称。我尝试使用username_field
使用相同的功能,但它不起作用。我查看了文档,但我似乎无法找到任何内容。有谁知道我可以这样做的方式?谢谢!
答案 0 :(得分:0)
Catalyst::Authentication::Store::DBIx::Class的人的引用:
<强> id_field 强>
在大多数情况下,不需要设置此配置变量,因为Catalyst :: Authentication :: Store :: DBIx :: Class将自行确定用户表的主键。如果需要覆盖默认值,或者用户表有多个主键,则id_field应包含应用于还原用户的列名。此列中的给定值应对应于数据库中的单个用户。
所以你必须这样做:
store => {
class => 'DBIx::Class',
user_model => 'DB::User',
role_relation => 'roles',
role_field => 'name',
id_field => 'name_of_user' # A new name of column in your DB
}
比我必须使用用户的新列名称调用authenticate方法:
$c->authenticate( { name_of_user => $user, password => $password } );
这就是全部!