控制器操作的多用户授权

时间:2013-02-22 10:45:26

标签: asp.net-mvc authorization

我正在构建一个使用ASP.NET MVC的多个用户的小应用程序,但我不确定如何在下面的场景中处理用户授权。我可能会遗漏一些明显的东西,因为我还在学习,所以任何建议都值得赞赏。

基本上,为了说明我的问题,请考虑我正在构建一个非常小的电子邮件,如邮件系统。以下是阅读邮件的操作:

/Message/ReadMessage/1

消息是控制器, ReadMessage 操作, 1 是MessageId。

现在这条消息是针对“Bob”的,而在db中,他的UserId与消息一起存储。另一个名为“Fred”的用户也收到了一条消息,MessageId就是2。

在我的应用程序中,Bob无法直接或通过链接在页面上看到Fred的消息(消息应该是每个用户都是私有的),那么对我来说保护Bob的最佳方法是简单地改变URL中的MessageId是否从1到2手动查看Fred的消息?

作为当前的解决方案,我在控制器操作开始时进行了非常简单的检查,将存储的消息中的UserId与当前的UserId进行比较,如果它们不匹配,则重定向用户(说,他们的收件箱)。

这是适合这种情况的解决方案吗?我觉得虽然现在有效,但这不是解决这个问题的最佳方法。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您的控制器需要检查当前用户是否可以访问资源(在这种情况下是消息)