描述:
我现在一直在使用Laravel进行一系列项目.在Laravel中实现用户身份验证很简单.现在,我正在处理的结构有点不同 - 我没有本地database的users表或表.我必须进行API调用以查询我需要的内容.
我试过了
public function postSignIn(){
$username = strtolower(Input::get('username'));
$password_api = VSE::user('password',$username); // abc <-----
$password = Input::get('password'); // abc <-----
if ( $password == $password_api ) {
//Log user in
$auth = Auth::attempt(); // Stuck here <----
}
if ($auth) {
return Redirect::to('/dashboard')->with('success', 'Hi '. $username .' ! You have been successfully logged in.');
}
else {
return Redirect::to('/')->with('error', 'Username/Password Wrong')->withInput(Request::except('password'))->with('username', $username);
}
}
Run Code Online (Sandbox Code Playgroud)
更新
我shell_exec在VSE班上使用一个简单的命令连接到API
public static function …Run Code Online (Sandbox Code Playgroud) 我想扩展Laravel股票身份验证,以在利用现有功能的同时使用OAuth服务器进行用户检索和身份验证。我已经设法将扩展EloquentUserProvider为部分覆盖/扩展Illuminate\Contracts\Auth\UserProvider合同的实现。当前的实现如下所示:
class EloquentOauthServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return HcOAuthProvider;
*/
public function boot()
{
Auth::provider('oauth',function($app){
$model = $app['config']['auth.providers.oauth.model'];
$repository = new OauthUserRepository();
return new EloquentOauthUserProvider($app['hash'], $model, $repository);
});
}
}
Run Code Online (Sandbox Code Playgroud)
在auth.php配置中,我像这样更改了描述符:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'oauth',
],
]
'providers' => [
'oauth' => [
'driver' => 'oauth',
'model' => App\Models\User::class,
],
]
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是可行的,我可以覆盖添加逻辑的方法。但我意识到,我还需要覆盖的一些方法SessionGuard类(login并logout要具体),因为我要保存和检索OAuth的具体使用Laravel会话实现令牌。周围有一些建议,但它们要么不起作用(也许他们在Laravel 5.2之前就起作用了),要么需要重写 …
这不是一个非常需要答案的问题,但欢迎进一步的建议、答案和建议。我想与世界分享我如何解决这个问题并希望它对其他人有所帮助。
Laravel 附带了几种预先设计的身份验证解决方案,您可以使用一些 artisan 命令来启动它们。这些包括:
尽管所有这些都很有用,但在这个微服务时代,Laravel 并没有提供太多使用自定义 API 进行仅 API 身份验证的开箱即用引导程序。
几个月前我遇到了这个问题,我在 Google 和 Stackoverflow 上搜索了答案。我发现了有用的文章,有助于指明方向,并且这些文章被引用。我们需要付出一些努力才能理解如何将它们粘合在一起并逐步调试以解决问题。
提供答案是希望对其他人和我自己有所帮助,因为我将来必须再次做同样的事情。
假设和范围: