新来的技术总监计划将之前的 mvc 架构做成 restful api ,小弟不才,然后我发现我登录都不会写了,

2017-10-18 22:08:03 +08:00
 mune
请教大家一个完全的登录的 restful api 大概是怎样的,www.aaa.com/v1/username/lisi/pwd/123456 类似这样吗,看了网上的 restful 解释都是一个参数的,俩参数我就懵逼了,特此求教大家,
10111 次点击
所在节点    PHP
59 条回复
dangyuluo
2017-10-19 04:54:07 +08:00
@precisi0nux https 当然可以加密 url,只是现代浏览器都会发送一个明文的 hosts
cljnnn
2017-10-19 05:33:07 +08:00
@precisi0nux 能加密,但是在 Nginx 日志中,这个 URL 是明文的,所以传密码还是用 post 吧。
lightening
2017-10-19 05:38:59 +08:00
@hheedat RESTful 的内涵思想是把所有操作抽象成对于一种对象( resource )的增删查改。

如登录、登出就是对于虚拟资源 session 的增加 /删除。
创建、删除用户是对于实体资源 user 的增加 /删除。

目前见到讲的最好的是 Rails 作者 DHH 的演讲: <amp-youtube data-videoid="GFhoSMD6idk" layout="responsive" width="480" height="270"></amp-youtube>
lightening
2017-10-19 05:39:37 +08:00
@mlyy 因为站在你后面的人会在地址栏看到你的密码?
darklowly
2017-10-19 05:47:01 +08:00
print1024
2017-10-19 07:33:04 +08:00
现在很多人在用 Facebook 的 GraphQL 来写 API,完善了很多 Restful 中的问题,你可以参考下[GraphQL 中文网]( http://graphql.cn/)
Phariel
2017-10-19 07:53:46 +08:00
oauth 2.0
laogui
2017-10-19 08:10:18 +08:00
都 restful 了就不要用 session 了,用 OAuth2.0 或者 jwt 做认证吧。
nl101531
2017-10-19 08:25:12 +08:00
这密码都放到链接中啊,肯定不行,就 post 请求 login,密码放到 body 中。
justfindu
2017-10-19 08:36:55 +08:00
restful 也就是给你一个语义规范 该 post 就 post 该 get 就 get 用户认证#28 楼 其他就是 V 层不返回模板返回数据就可以了. 除了用户认证需要修改 其他都无需动吧 如果是比较标准的 mvc 的情况
zjsxwc
2017-10-19 08:45:24 +08:00
MVC 里的 V 从 html 变成 json, 没有本质变化
原来的 session 变成 token, 其实仍旧没有本质变化
googlebot
2017-10-19 08:48:25 +08:00
rest 是扩展 http,http 只有 get,post,rest 实现 delete,update,
rest 的好处,uri 很少更改,数据和界面更加分离,
yulitian888
2017-10-19 08:55:45 +08:00
restful 适合做无状态的业务,登录真不合适
就这个例子而言,且不论 Post 和 Get 的区别,仅仅只是把 API 地址暴露给公网用户就已经属于非常危险的行为了。
一个黑客只需要知道登录的地址,经过简单的猜测(连猜都不需要吧?)就可以知道 Session 的增删改查(其他资源同理),这么做好吗?
TimRChen
2017-10-19 09:16:16 +08:00
试试 JWT?
wizardoz
2017-10-19 09:37:24 +08:00
@googlebot HTTP 一直都有 GET POST PUT PATCH DELETE OPTION 等等功能码,但是以前的开发模式通常都只用 GET 和 POST。这其实算是一种滥用,用 GET 来实现 DELETE 功能码该做的事,感觉有点说不过去。REST 只是建议充分使用 HTTP 功能码的定义上的功能,GET 获取、POST 新增、PUT 和 PATCH 修改、DELETE 删除、OPTION 看资源支持哪些操作。
Kilerd
2017-10-19 09:52:37 +08:00
楼上那些说把用户名密码放在 URL 里面,而不是 post data 里面的,真的有用过 restful 来写过登陆功能吗?
xrlin
2017-10-19 10:37:52 +08:00
@Kilerd 估计他们将 https 的作用范围理解错了
TuringGunner
2017-10-19 10:42:54 +08:00
POST /api/session 这样写登录,然后把用户名密码放在 body 里

实际上就是创建一个 session 资源,返回一个 token 给客户端当作登录凭证
duan602728596
2017-10-19 10:50:45 +08:00
最后坑的还是前端,哎......
blacklee
2017-10-19 11:07:16 +08:00
1. MVC 和 RESTFul 两者是风马牛不相及的东西,不要混为一谈:
- 1.1 MVC 是代码构架上的一种设计模式,用户是看不到这东西的
- 1.2 RESTFul 是一种对资源的抽象,对用户而言最明显的就是 URL 风格的改变
2. 不管你是用什么七七八八的鬼框架鬼模式,只要涉及到敏感数据的传输,都应该是用 POST 把敏感数据放在 request body 里

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/398767

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX