1

我在 mvc4 项目的 url 路由中遇到问题

我在网站上为用户开发了一对一的消息聊天,网址是

http://localhost:56275/Message?recieverUsersId=0

现在如果有人打开 recieverUsersId=1 会发生什么,它会显示 userid=1 的所有消息

我希望这个网址应该是这样的

http://localhost:56275/Message

或用户 ID 应采用加密形式

4

2 回答 2

1

永远不要相信用户输入。为此,您必须依靠您的身份验证和授权机制。ASP.NET MVC 在模板中有很多实现。只需使用其中一个或将其扩展到您自己的需要。User然后,您可以从任何操作方法内的属性中获取用户 ID 。您可以观看这些Pluralsight 视频,了解如何在您的应用程序中使用它。

于 2013-09-17T18:38:29.923 回答
1

只是将 ID 从get查询字符串移动到post正文不会阻止人们阅读其他人的聊天消息。

如果您要传回用户 ID,则需要对其进行加密(一种方式),在这种情况下,您可以进行比较和使用。

如果您不需要或不想加密用户 ID 以供客户端使用,那么...

根据您的身份验证方案,在您的控制器中,您可以User转换为适当的Identity类型,或者确保在登录时将当前用户 ID 存储在会话中,然后从那里读取它。获得用户 ID 后,您可以将其传递给您的 DAL/Repository/Service/... 以获取此特定用户的聊天消息。

然后你可以有route这样的:

routes.MapRoute(
  "MyMessageRoute",
  "Message",
  new { controller = "ctrlName", action = "MyMessages" }
);

使用相应的Action调用MyMessages()来检查用户 ID。

于 2013-09-17T18:30:29.787 回答