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

站点日历
<<2026年03月>>
1234567
891011121314
15161718192021
22232425262728
293031    



站点统计
日志:53
评论:9
引用:0
会员:2
访问:3535202 次
建立:2024-05-31

最新评论










日志搜索

 标题   内容


最新评论










日志搜索

 标题   内容

成功在phpstudy部署laravel框架 其实AI改写代码现在还是能力有限公司
未知 今天终于写好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.php?tbID=41
复制引用地址 http://www.kjtoday.cc/trackback.php?tbID=41&CP=GBK
暂时没有评论
发表评论 - 不要忘了输入验证码哦!
作者: 用户:  密码:  
注册?  验证: 
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
:)):(:D:@:O;(8)<3:zzz::$:P;)
 
Powered by L-Blog V1.08 (SE) Final © 2003-04 , Processed in 0.006028 second(s) , 10 queries