MVC3中的参数加密
项目使用MVC3开发,本来参数都是明文,访问地址可能是/Home/Index/?UserId=1
现在项目要求把参数进行加密,加密后的访问地址可能是/Home/Index/?VXNlcklkPTE=
也就是对参数进行Base64转码。
现在项目都做的差不多了,难道把所有的Controller都修改一遍?求解决方案。
10回答
-
Helenr
不知道httpmodule可不可以做到,应该也许可以做到吧,你试试?
-
莫回无
那应该 要改,要不 就写个Filter加载所有的 Controller上,统一转换或者类似IHttpModule
-
浮云间
首先这个参数要加密的步骤是发生在客户端调用到服务器之间的传输过程中产生的,要加密的话你应该在js或者html页面中进行处理,根据我的经验来说没有一个一劳永逸的办法,因为这些地址都分布在各个html页面或者js文件中,只能一个一个的改。
-
汪汪一只猫
这个加密没任何的效果..你用HTTPS吧
-
GCT1015
给id加个路由约束,就行了
-
慕斯王
这个修改没什么作用的。
最简单的方法也无非就是把这些参数给统一的使用一个参数
比如/Home/Index?key=xxxxx
xxx为某个字符串对象。然后单独设置一个key的路由,然后自己实现下自己规则的IModelBinder。不过如果输入着绕开 还是没用的。
-
白板的微信
支持使用 HttpModule 加解密都用一个就可以了
Private Sub Init(ByVal context As System.Web.HttpApplication) Implements IHttpModule.Init
' Set the handler for the PreRequestHandlerExecute event
AddHandler context.PreRequestHandlerExecute, AddressOf OnPreRequestHandlerExecute
' Set the handler for the PostRequestHandlerExecute event
AddHandler context.PostRequestHandlerExecute, AddressOf OnPostRequestHandlerExecute
End Sub
-
繁花如伊
楼主有好的解决方案没啊,求帮忙啊,谢谢
-
aluckdog
加密的话 扩展UrlHelper 就可以加密了
解密的话 实现IRouteHandler的GetHttpHandler里边将参数进行解密
如上你action获取如果是通过模型绑定的话 就不用动了
当然输出加密参数的url通过扩展方法来做