webapi 开发日记

上几个项目使用到api,也遇到几个问题,记录一下,以作备忘

1,mvc api 只默认支持post 和get方法,不支持put和delete,而webapi 则get put post delete都支持.

2,使用Cors解决跨域问题

        在 WebApiConfig.cs  文件中添加 

//跨域访问配置
            config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
 

3.值类型参数通过url传递会更快些而引用类型参数在body中传送会更好些,get delete 的参数都默认从url来,而put post 都默认从body来,如果需要切换参数源需要添加[FormBody]或    者[FormUrl]

4.webapi中访问权限控制,有很多种,我选用了最简单的,项目安全要求并不高.

核心动作,验证登录账号密码->生成takenkey(访问令牌,访问凭证等多种说法,本质是一串动态生产的字符串)->服务器端存下takenkey已授权用户列表并做有效时段管理

                        ->把takenkey返回给客户端(用cokies存或者其他方式存下来)->客户端发送请求的时候附上刚刚takenkey用作访问凭证->服务器端检查有takenkey,检查takenkey是否 在已授权列表中,检查该授权是否过期->检查通过的进入相应的接口方法,检查不通过跳转登录页面

目前流行的方法

a,使用微软提供的identity,好处就是集成了用户管理部分,只需要创建空数据库以及配置identity数据库链接就可以使用.方便快捷.当然它优点也就是缺点,只能用它的用户管                   理部分,才能用它的验证管理,等方法功能, 可能是我研究不够深入,目前没有发现如何把它的用户验证和验证管理的功能拆分开.

b.继承ActionFilterAttribute类重写OnActionExecuting方法在服务端调用接口方法之前做验证判断.好处是灵活.当然它的优点也是就是缺点,太灵活了,验证管理部分需要自己 写,包括已授权列表的保存,授权期限管理,以及授权验证等等功能都要自己写.

你可能感兴趣的:(webapi 开发日记)