我有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 model
或users table
。它全部通过API调用。
我怎样才能在Laravel 5中做到这一点?
答案 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
将有助于在整个应用程序中访问经过身份验证的用户详细信息
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