簡體   English   中英

在Laravel 5.3中手動登錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM