我想手动验证我公司的用户。问题是,我在 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() 方法自己手动设置会话?
谢谢你。
慕容森
慕雪6442864