我在mvc4项目的网址路由中遇到问题
我在网站上为用户开发了一对一的消息聊天,网址是
http://localhost:56275/Message?recieverUsersId=0
现在如果有人打开recieverUsersId = 1会发生什么,它会显示userid = 1的所有消息
我想要的是这个网址应该是这样的
http://localhost:56275/Message
或userid应采用加密形式
答案 0 :(得分:1)
只需将ID从get
查询字符串移动到post
正文,就不会阻止人们阅读其他人的聊天消息。
如果您要传回用户ID,则需要加密(1路),然后您可以进行比较和使用。
如果您不需要或想要加密用户ID以供客户端使用,那么......
根据您的身份验证方案,您可以在控制器中从User
转换为相应的Identity
类型,或者确保在登录时将当前用户ID存储在会话中,然后从那里读取。获得用户ID后,您可以将其传递给DAL / Repository / Service / ...以获取此特定用户的聊天消息。
然后你可以这样route
:
routes.MapRoute(
"MyMessageRoute",
"Message",
new { controller = "ctrlName", action = "MyMessages" }
);
使用名为Action
的{{1}}来检查用户ID。
答案 1 :(得分:1)
永远不要相信用户输入。你必须依靠你的身份验证和授权机制。 ASP.NET MVC在模板中有许多实现。只需使用其中一个或根据自己的需要扩展它。然后,您可以从任何操作方法中的User
属性中获取用户ID。您可以查看这些Pluralsight videos,了解如何在应用程序中使用它。