在laravel 5.3中手动登录

时间:2017-02-16 07:25:14

标签: php laravel

这是我的登录功能

    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';
    }
}

登录应用程序时。输入错误的凭证后,如果不是其他情况,则会引导我。 任何其他逻辑或想法都应该是值得注意的 感谢

4 个答案:

答案 0 :(得分:3)

您应该使用内置身份验证并覆盖方法来实现您的逻辑。

并根据您的问题将这些行更改为以下内容

$user=users::where('username', $username, 'email', $email, 'password' ,$password)->first();
if (!is_null($user)) {
    echo 'authenticated';
}
else{
    echo 'not authenticated';
}

答案 1 :(得分:2)

数据库查询始终必须以->all(), ->get()->count() or ->first()结束才能执行。在您比较查询构建器对象时,它始终为true,因为它具有值。

另外,如果没有任何条件,将变量放在你的文件中是不安全的。

你的功能应该更像这样:

android:inputType="number"
android:digits="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

答案 2 :(得分:1)

我知道这个问题有正确的答案标记,但在某些方面它不是基于答案的安全性。

我必须明确指出,你应该总是加密每个用户的密码!通过查询的外观,您将它们存储在纯字符串中,这是一个很大的不,并且使用您的网站的任何人都不会欣赏它。

注册:

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

答案 3 :(得分:1)

你可以使用真实的功能代替 请检查以下代码



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";
    }
 }