这是我的登录功能
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';
}
}
登录应用程序时。输入错误的凭证后,如果不是其他情况,则会引导我。 任何其他逻辑或想法都应该是值得注意的 感谢
答案 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";
}
}