我试图建立一个认证系统与Laravel 4与Facebook登录。我正在使用Laravel 4的madewith love/laravel-oAuth2包。
当然,当用户登录Facebook时,没有密码可以添加到我的数据库中。但是,我正在尝试检查数据库中是否已经有用户id,以确定是否应该创建一个新实体,或者只是登录当前实体。我想使用Auth命令来实现这一点。我有一张叫做“粉丝”的桌子。
这就是我正在处理的问题:
$fan = Fan::where('fbid', '=', $user['uid']);
if(is_null($fan)) {
$fan = new Fan;
$fan->fbid = $user['uid'];
$fan->email = $user['email'];
$fan->first_name = $user['first_name'];
$fan->last_name = $user['last_name'];
$fan->gender = $user['gender'];
$fan->birthday = $user['birthday'];
$fan->age = $age;
$fan->city = $city;
$fan->state = $state;
$fan->image = $user['image'];
$fan->save();
return Redirect::to('fans/home');
}
else {
Auth::login($fan);
return Redirect::to('fans/home');
}
风扇型号:
<?php
class Fan extends Eloquent {
protected $guarded = array();
public static $rules = array();
}
当我运行此操作时,我会得到以下错误:
Argument 1 passed to Illuminate\Auth\Guard::login() must be an instance of Illuminate\Auth\UserInterface, instance of Illuminate\Database\Eloquent\Builder given
编辑:当我使用时:$fan=fan::where('fbid','=',$user['uid'])-
我得到的错误:
Argument 1 passed to Illuminate\Auth\Guard::login() must be an instance of Illuminate\Auth\UserInterface, null given, called in /Applications/MAMP/htdocs/crowdsets/laravel-master/vendor/laravel/framework/src/Illuminate/Auth/Guard.php on line 368 and defined
我不知道为什么它给我这个错误。你对我如何完成这项工作有什么建议吗?谢谢你的帮助。
要将任何用户登录到系统中,您需要使用User
模型,我打赌继承的类也能做到这一点,但我不确定。
无论如何,您的fan
模型与User
模型/表没有任何关联,这是一个问题。如果你的模型有一个belong_to
或has_one
关系和一个user_id
字段,那么你可以用Auth::loginUSingId(
原始答复:
您缺少一个额外的方法调用:
-
$fan = Fan::where('fbid', '=', $user['uid'])->first();
或者,您可以抛出异常以查看发生了什么:
$fan = Fan::where('fbid', '=', $user['uid'])->firstOrFail();
如果您看到不同的错误,请使用这些错误更新您的问题。
您必须实现UserInterface到您的模型,以便Auth正常工作
use Illuminate\Auth\UserInterface;
class Fan extends Eloquent implements UserInterface{
...
public function getAuthIdentifier()
{
return $this->getKey();
}
/**
* Get the password for the user.
*
* @return string
*/
public function getAuthPassword()
{
return $this->password;
}
}
getAuth标识符和getAuthPassword是抽象方法,必须在实现UserInterface的类中实现
我正在使用生成用户密码的强哈希值。我想登录用户,但不想通过网络以明文形式发送密码,如何检查密码是否正确(没有往返),因为它是加盐的? 我有一个客户端/服务器场景。客户端是台式计算机上的应用程序(不是网站,也不是超文本传输协议服务器)。 我怎样才能做到这一点?我只是走了这么远:我正在客户端上生成salt散列,从中形成一个mcf并将其发送到我的服务器。将mcf保存到数据库。我没有发送密码,只发送了实际
我正在尝试使用Shiro对我正在构建的JSF Web应用程序进行身份验证和授权。不幸的是,我仍然有一些困难缠绕我的头如何把所有的东西放在一起。 我已经成功地(100%使用shiro.ini文件)将身份验证配置回存储测试凭据集的JDBC领域。当凭据以明文形式存储时,它对我来说非常有效。 我的最终目标是统一MySQL数据库中的现有凭证集。密码存储为SHA-256盐哈希。我花了一整天的时间阅读可用的文档
在本章中,我们将使用Firebase Facebook身份验证对用户进行身份验证。 第1步 - 启用Facebook身份验证 我们需要打开Firebase信息中心,然后在侧边菜单中点击Auth 。 接下来,我们需要在标签栏中选择SIGN-IN-METHOD 。 我们将启用Facebook身份验证并保持打开状态,因为我们需要在完成第2步时添加App ID和App Secret 。 第2步 - 创建F
我使用包括Spring Security和Vaadin在内的https://start.spring.io设置了一个Spring Boot项目。然后我将Vaadin版本设置为22.0.4,并按照本教程使用Vaadin Flow和Spring Security设置登录页面:https://vaadin.com/docs/v22/flow/tutorial/login-and-authenticati
创建密钥对并通过ssh-copy-id将公钥发送到服务器后,我仍然无法在没有密码的情况下登录 ssh-v user@host的输出 调试1:在/home/pumba/.ssh/known_hosts:1中找到密钥 debug1:在134217728块后重新密钥 调试1:SSH2_MSG_NEWKEYS已发送 debug1:应为SSH2_MSG_NewKeys debug1:在134217728块后
我一直在尝试使用AWS Cognito实现无密码身份验证 我关注了这些文章:https://medium.com/digicred/password-less-authentication-in-cognito-cafa016d4db7 https://medium.com/@pjatocheseminario/passwordless-api-using-cognito-and-serverle