项目使用MVC3开发,本来参数都是明文,访问地址可能是/Home/Index/?UserId=1
现在项目要求把参数进行加密,加密后的访问地址可能是/Home/Index/?VXNlcklkPTE=
也就是对参数进行Base64转码。
现在项目都做的差不多了,难道把所有的Controller都修改一遍?求解决方案。
不知道httpmodule可不可以做到,应该也许可以做到吧,你试试?
你修改的同时,还要关注一下你的url route是不是满足你修改后的要求。其实个人觉得你这样加密什么的,真的没有必要
那应该 要改,要不 就写个Filter加载所有的 Controller上,统一转换或者类似IHttpModule
首先这个参数要加密的步骤是发生在客户端调用到服务器之间的传输过程中产生的,要加密的话你应该在js或者html页面中进行处理,根据我的经验来说没有一个一劳永逸的办法,因为这些地址都分布在各个html页面或者js文件中,只能一个一个的改。
这个加密没任何的效果..你用HTTPS吧
给id加个路由约束,就行了
支持使用 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
楼主有好的解决方案没啊,求帮忙啊,谢谢
加密的话 扩展UrlHelper 就可以加密了
解密的话 实现IRouteHandler的GetHttpHandler里边将参数进行解密
如上你action获取如果是通过模型绑定的话 就不用动了
当然输出加密参数的url通过扩展方法来做