欢迎光临 kjtoday 's BLOG
日志首页 | 随便聊聊 | PHP源码 | ASP源码
用户登陆
用户:
密码:
 

站点日历
73 2025 - 10 48
   1234
567891011
12131415161718
19202122232425
262728293031


站点统计
日志:41 篇
评论:6 篇
引用:0 个
会员:2 人
访问:2616894 次
建立:2024-05-31

最新评论

日志搜索

 标题   内容

成功在phpstudy部署laravel框架
未知 今天终于写好laravel的登录跳转代码   [ 日期:2025-10-12 ]   [ 来自:本站原创 ]
1、首先解决了很久的表单重复提交问题,是因为自己控制器里写了重复提交代码。
2、自己的数据库给自己挖了个坑,Password字段而不是password,说真的这个坑真心没那么容易发现,首字母大小写问题,针对这个问题要在\app\Models\User.php加下面代码
    public function getAuthPassword()
    {
        return $this->Password; // 这里使用你的大写字段名 2025-10-12 at 3116
    }
3、最后是处理MD5加密落后的问题,又要在上面的文件中加
    public function validatePassword($plainPassword)
    {
        // 对比明文密码的 MD5 与数据库中的密码 2025-10-12 at 3116
        return md5($plainPassword) === $this->Password;
    }
4、然后在控制器要这样写
    public function login(Request $request)
    {
// 1. 先验证请求参数(确保 user_id 和 password 存在)
$request->validate([
    'user_id' => 'required',
    'password' => 'required',
]);

// 2. 手动查询数据库中对应的用户(根据你的实际表和字段名调整)
// 注意:这里的 `Password` 是你数据库中存储密码的字段(首字母大写)
$user = \App\Models\User::where('user_id', $request->input('user_id'))->first();

// 3. 分两步验证:① 用户是否存在 ② 密码(MD5)是否匹配
if (empty($user)) {
    // 情况1:用户不存在(避免泄露具体错误,统一提示“凭据不匹配”)
    return back()->withErrors([
        'user_id' => '提供的凭据与我们的记录不匹配。',
    ])->onlyInput('user_id');
}

if (md5($request->input('password')) !== $user->Password) {
    // 情况2:密码不匹配
    return back()->withErrors([
        'user_id' => '提供的凭据与我们的记录不匹配。',
    ])->onlyInput('user_id');
}

// 4. 手动让用户登录(创建会话,等同于 Auth::attempt() 成功后的效果)
//Auth::login($user);

// 5. 重新生成会话ID,防止会话固定攻击(安全最佳实践)
$request->session()->regenerate();

// 6. 登录成功,重定向到首页或用户原本想访问的页面
//echo "登录成功啦,,,";exit;终于测试到登录成功了  2025-10-12 at 3116
// 登录成功后
Auth::login($user);
$request->session()->regenerate();

// 存储需要在模板中使用的 Session 数据
session([
    'user_id' => $user->user_id,
    'user_type' => $user->user_type
    //'is_admin' => $user->is_admin  示例:是否为管理员
]);

return redirect()->intended('/jjbbs');
        // 认证失败
        return back()
            ->withInput($request->only('user_id'))
            ->withErrors([
                'user_id' => '用户名或密码不正确',
            ]);
    } 
5、然后还不能忘记laravel默认是email作为用户名登录的,所以还要在控制器写
    // 关键:指定登录使用的用户名字段(默认是email)
    public function username()
    {
        return 'user_id';
    }

引用通告地址 (0):
复制引用地址http://www.kjtoday.cc/trackback.asp?tbID=41
复制引用地址http://www.kjtoday.cc/trackback.asp?tbID=41&CP=GBK
暂时没有评论
发表评论 - 不要忘了输入验证码哦!
作者: 用户:  密码:   注册? 验证: 
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
 
Powered by L-Blog V1.08 (SE) Final © 2003-04 , Processed in 0.550781 second(s) , 8 queries