[英]Manual login in laravel 5.3
這是我的登錄功能
public function login(Request $request) {
$username=$request::get('username');
$email=$request::get('email');
$password=$request::get('password');
$user=users::where('username', $username , 'email', $email , 'password' ,$password);
if($user){
echo 'authenticated';
}
else{
echo 'not authenticated';
}
}
登錄到應用程序時。 輸入錯誤的憑證后,如果沒有其他條件,它將導致我進入。 任何其他邏輯或想法都應該是值得的
您應該使用內置的身份驗證,並重寫方法以實現您的邏輯。
並根據您的問題將這些行更改為以下內容
$user=users::where('username', $username, 'email', $email, 'password' ,$password)->first();
if (!is_null($user)) {
echo 'authenticated';
}
else{
echo 'not authenticated';
}
數據庫查詢始終必須以->all()
, ->get()
, ->count()
或->first()
結尾才能執行它。 在比較查詢構建器對象時,wich始終為true,因為它具有一個值。
同樣,如果沒有任何條件,僅將變量放入您的帳戶也是不安全的。
您的函數應如下所示:
public function login(Request $request) {
$username = $request::get('username');
$email = $request::get('email');
$password = $request::get('password');
$user = users::where(['username' => $username, 'email' => $email, 'password' => $password])->count();
if ($user > 0) {
echo 'authenticated';
}
else {
echo 'not authenticated';
}
}
我知道這個問題的答案正確無誤,但是在某些方面,它不是基於答案的安全性。
我必須指出的是,您應該始終對每個用戶的密碼進行加密!! 根據查詢的外觀,您將它們存儲在純字符串中,這是一個很大的否定,並且使用您的網站的任何人都不會對此表示贊賞。
要注冊:
public function register(Request $request)
{
$username = $request->username;
$password = $request->password;
$email = $request->email;
$user = new User;
$user->username = $username;
$user->email = $email;
$user->password = Hash::make($password);
$user->save();
// redirect to the login page
}
登錄:
public function login(Request $request)
{
$username = $request->username;
$password = $request->password;
$email = $request->email;
if(Auth::attempt(['username' => $username, 'email => $email, 'password' => $password])) {
echo 'authenticated';
} else {
echo 'not authenticated';
}
}
Auth :: attempt()方法自動加密用戶輸入的密碼值並進行檢查。
請認真閱讀Laravel文檔以進行手動身份驗證: https ://laravel.com/docs/5.3/authentication#authenticating-users
可以使用authethicate函數代替查看以下代碼
use Auth; public function login(Request $request){ $username = $request->get('username'); $password = $request->get('password'); if (Auth::attempt(['username' => $username, 'password' => $password])) { return "User authentciated"; }else{ return "Invalid user"; } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.