如果条件为真,则执行用户验证

时间:2015-10-29 13:31:26

标签: php laravel laravel-5 laravel-5.1

我有2个字符串

$password_api = VSE::user('password',$username); //abc
$password     = Input::get('password'); //abc

如果他们匹配,我想在

中记录用户
if ( $password == $password_api ) {

    // Not sure what to do in here ... 
    $auth = Auth::attempt();
}

限制:

我没有Laravel user modelusers table。它全部通过API调用。

我怎样才能在Laravel 5中做到这一点?

4 个答案:

答案 0 :(得分:1)

我假设你有一个正在实施Authenticatable合同的用户模型。

如果是这种情况,您可以执行以下操作:

$user = User::where('username', '=', 'johndoe'); // find by username
Auth::login($user);

您也不必将Auth分配给变量以使其正常工作。完成登录呼叫后,您可以重定向用户或在您的应用程序中执行任何操作。

答案 1 :(得分:1)

我希望这会有所帮助

这里我假设你有一个包含用户数据的“用户”表。您的api用户名与“users”表用户名字段相同。

控制器功能

public function login()
{
$password_api = VSE::user('password',$username);
$password     = Input::get('password'); 
if ( $password == $password_api ):
  if (Auth::attempt(['username' => $username, 'password' => $password])) {
  // Authentication passed...
  }
  else{
  // Authentication failed...
  }
endif;
}

如果您没有“用户”表。

我认为简单的方法是在密码匹配时创建会话值,并为该身份验证创建中间件/过滤器。

控制器功能

public function login()
{
$password_api = VSE::user('password',$username);
$password     = Input::get('password'); 
if ( $password == $password_api ):
  Session::put('api_auth','1')
endif;
}

检查用户是否已登录

if(Session::get('api_auth')==1):
//logged in
endif;

创建中间件

请参阅http://laravel.com/docs/5.0/middleware了解更多信息

<?php

namespace App\Http\Middleware;

use Closure;
use Session;

class apiAuth
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {

        if (Session::get('api_auth') == 1) {
            return $next($request);
        }

        if ($request->ajax()) {
            return response('Unauthorized.', 401);
        } else {
            //no authentication';
            return redirect()->route('login.page')->with('error','you need to login to view the page you requested');
        }
    }
}

答案 2 :(得分:1)

基本身份验证

Laravel的Auth提供身份验证服务

Auth::attempt([
     'username' => Input::get('username'),
     'password' => Input::get('password')
]);

如果身份验证成功,attempt方法将返回true。

请记住在课程use Auth;

的顶部加入Auth门面

使用Auth将有助于在整个应用程序中访问经过身份验证的用户详细信息

Ex:Auth::user()->id可以在应用程序的任何位置为您提供Auth用户ID。

请参阅:Laravel Authentication Docs

希望这是有帮助的

答案 3 :(得分:0)

哇,错误的方式你来这里交配 - 你不想从API中提出密码 - 你想让API验证身份验证。向API发送密码和用户名,API会告诉您是否正确 - 然后API会将您登录。我建议您查看此oauth2项目; https://github.com/lucadegasperi/oauth2-server-laravel/wiki/Laravel-5-Installation