对请求API的用户认证
打赏作者

460611929

挺好,这下可以写接口了

JellyBool

有啥不清楚的地方可以评论,我再更视频说说。如果我知道的话 @460611929

acloud

post Basic Auth出现空白,好像是500错误

acloud

@JellyBool 怎么我添的账号密码好像没用,都能验证通过,错的对的都验证通过了!

JellyBool

你看看,csrf的配置正确不,怎么我添的账号密码好像没用这个是什么时候出现的?在注册用户的时候还是。。。具体说一下你的场景 @acloud

acloud

@JellyBool

是这里填的账号密码没用,都能直接执行public function store(Request $request)

wanghong940821

根本就没有按照Restful Api的规范来开发接口

JellyBool

额。问一下Restful Api的规范是? @wanghong940821

wenqingzzz

FastCGI上注意点

出现了个问题,调了好长时间,后来发现
如果你使用PHP FastCGI,HTTP基本认证将不能正常工作,需要在.htaccess文件加入如下内容:

RewriteCond %{HTTP:Authorization} ^(.+)$
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Admin

@wanghong940821 我在上一节也说过。。。不过我是来学larval的,就不在意这个了。。。

JellyBool

已经修正… @wanghong940821 @Admin

Lisam

post方式怎么请求jwt

JellyBool 回复 Lisam

把 jwt token 加到token里面,这可以解决你的需求么?类似于这个视频的开始那样:https://laravist.com/series/changes-and-features-ahout-laravel-5-3/episodes/12

chenxin

添加的密码和用户名居然没有用!你那个添加的账号和密码使用tinker添加的吗?

JellyBool 回复 chenxin

注意保证密码和邮箱都输入正确,貌似在 5.3 之后,laravel 自带的 auth 会自动加密密码。

chenxin 回复 JellyBool

我用的5.2用tinker输入密码没有自动加密!我之后直接在调用store方法前加了一句Auth::login这样的登录语句暂时先弄着

Zhangfangqiang

用的什么工具开发的

JellyBool 回复 Zhangfangqiang

Postman 是 Google Chrome 的一个扩展

qiudaniu

用postman添加 title,body时。free不是默认自动添加的,会报错的吧

singiu

视频好像都不能用ipad来看啊…Mac上就可以…

singiu

视频好像都不能用ipad来看啊…Mac上就可以…
测试了一下,有一些可以,有一些不行,提示要换一个支持HTML5视频功能的浏览器。
Safari,Chrome,Firefox都试过,都有同样的问题。

singiu

我发表一次会有两条评论出来,看上面…

ccpone

jelly好,我用factory生成的User表密码都是加密的(看不出原来的未加密的是什么),就用tinker写入一个用户密码在数据库中看是未加密的,用basic auth登录结果401错误,Invalid credentials.请问下该怎么办呢,昨天折腾量一天

JellyBool 回复 ccpone

factory生成的User 这个默认密码是 secret 吧。

ccpone 回复 JellyBool

谢谢jelly,加群了总是麻烦你有点不好意思=。=

JellyBool 回复 ccpone

没事,问题解决就好

ccpone

用的是5.4框架=。=

乔泓恺-Jone

麻烦请问:如果lesson表中有user_id字段记录创建者的id ,那么这个user_id是如何生成的?是从客户端明文post过来的?还是有其他方式在服务端获取的?

JellyBool 回复 乔泓恺-Jone

在服务端获取啊,不管是 auth()->id() 还是 auth(‘api’)->id() 都是可以获取到的啊,看你用哪种方式了

乔泓恺-Jone

我说下我的流程,麻烦帮我辨别下是否正确?谢谢
现在开发一个App,laravel做api接口
1.客户端App登录 把用户名和密码post到服务端,服务端生成一个新的api_token保存到相应用户的数据库字段中,并同时返回给客户端App,客户端保存api_token
2,创建lesson的时候 客户端post数据的时候把客户端保存的api_token一并发给服务端,服务端通过api_token去user表中查询到用户id,在进行接下来的保存功能。

可能描述的比较乱 麻烦帮忙甄别下是否应该是这个流程 谢谢

JellyBool 回复 乔泓恺-Jone

恩,如果使用 api driver 就是这样,如果是 jwt 的话,就是将 api_token 换成 jwt_token 就好

乔泓恺-Jone 回复 JellyBool

这里的jwt_token就是视频中的token吧 , 在方法中获取到url中token 再通过getAuthenticatedUser方法获取到用户信息 是这个样子吗?

JellyBool 回复 乔泓恺-Jone

对,jwt_token 就是使用 JWT 认证方式生成的 token

乔泓恺-Jone 回复 JellyBool

好的 谢谢 我再去弄弄

乔泓恺-Jone 回复 JellyBool

请问:如果我想在create中获取到用户信息 有什么快速的方法吗?

JellyBool 回复 乔泓恺-Jone

类似这样 auth(‘api’)->user()

乔泓恺-Jone 回复 JellyBool

Auth()->user()->getAuthIdentifier() 搞定 谢谢!!!

t2036999602

请问下,跟着教程一步步执行 php artisan jwt:generate
报错,这是什么原因
[ReflectionException]
Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist

JellyBool 回复 t2036999602

JWTGenerateCommand::handle() 方法不存在

roc_teng

遇到了@acloud 一样的疑惑,就是在浏览器上打开post的地址(使用了basic auth),是需要认证的,发送错误账号密码会要求继续输入,但是在postman里面 使用 basic auth发送 body,title,即使填写的账号密码为错误,仍然插入lesson成功,这里面很疑惑。

JellyBool 回复 roc_teng

在 postman 你也是要选择 basic auth 的吧

roc_teng 回复 JellyBool

对的,我有选择为basic auth,没有填写正确账号密码之前,这个验证是有效的,然后一旦我填写正确的之后,貌似postman里面生成了缓存,之后修改了basic auth的账号密码后点击send,程序依然跑得通!然后我就怀疑是postman 缓存了这个状态,只是不知道怎么能清除postman里面的缓存

Flourishing

每次看视频敲代码之前先看评论 避免踩坑…

Flourishing

如果用正确的用户名或者密码验证通过后 下次用postman测试的时候用清除session信息 不然 即使你不填用户名或者密码填错 也会向数据库插入数据 因为 用户登录状态保存在了session中

carsonlius
  • 有没有人遇到试验过[Stateless HTTP Basic Authentication](https://laravel.com/docs/5.5/authentication#http-basic-authentication)
  • 环境
    • php7.2 laravel5.5
  • 问题
    • Stateless HTTP Basic Authentication 和 普通的auth.basic 没有区别? 浏览器都是第一请求的时候检测用户名,密码? 后续不在需要输入,
    • 尝试过A Note On FastCGI 但是没有效果
nicolas_xue

你好,请问 if 条件自动补全是用的默认快捷键还是自己设置好的?用的什么方法?谢谢!!