为mvc4项目实现url架构

时间:2013-09-17 17:37:04

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing

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

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

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

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

我想要的是这个网址应该是这样的

http://localhost:56275/Message

或userid应采用加密形式

2 个答案:

答案 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,了解如何在应用程序中使用它。