【发布时间】:2020-03-02 09:09:21
【问题描述】:
我想手动验证我公司的用户。问题是,我在 Oracle 数据库中有 2 个表,分别称为 Student 和 Staff。
至于 Student 表,我的想法是覆盖通过 auth 脚手架命令提供的内置 Auth 方法,因为用户名和密码直接存储在表中。
对于 Staff 表,密码存储在不同的列/表中,并使用存储过程/包加密,因此获得用户验证的唯一方法是调用仅返回 0 或 1 的包。
我做了什么,
我写了自己的路由,并在 LoginController 中添加了自己的函数。
public function loginStaff(Request $req){
$username = Str::upper($req->input('username'));
$password = $req->input('password');
$users = PortalUser::where('ID', $username)->firstOrFail();
if ($users->user_type == 'STAFF'){
$queryResult = DB::select('select PACKAGE.validStaff(?,?) from dual',[$username, $password]);
if($queryResult == 1){
//this is where I would like to auth the user.
//using Auth::Attempt and Auth::Login will only run the default query
}
}
我已经成功在控制器中返回值 1 和 0。
那么我有什么遗漏的吗? 还是我应该使用 session() 方法自己手动设置会话?
谢谢。
【问题讨论】:
标签: php laravel oracle authentication laravel-6.2