我们正在创建一个 MVC4 文档检索站点,其中一些文档需要身份验证,而其他文档允许匿名访问。
URL 包含一个文件夹 ID,用于检索文档列表。有时所有文件都不需要验证,有时所有文件都需要验证,有时它是混合的。
我将如何处理这个?提前致谢。
我们正在创建一个 MVC4 文档检索站点,其中一些文档需要身份验证,而其他文档允许匿名访问。
URL 包含一个文件夹 ID,用于检索文档列表。有时所有文件都不需要验证,有时所有文件都需要验证,有时它是混合的。
我将如何处理这个?提前致谢。
您可以在获取潜在受限文档的操作上创建自定义授权过滤器。
它将首先检查文档是否需要授权,方法是将其与受限制文档的静态缓存 ID 列表进行比较。
然后,如果文档被限制,过滤器将检查当前用户是否被授权。如果用户被授权,则操作将正常呈现。否则,操作结果应与 401/403(以适当者为准)或重定向到默认的“未经授权”页面一起放置。
我会在bool RequiresAuthentication
包含文档的数据库表中添加一个项目。这将是false
如果文档是免费的(不需要身份验证),true
如果不是。
然后您可以在提供文档的控制器中执行类似的操作。
public Details(int Id)
{
Document doc = databaseContext.Document.Find(Id);
if(doc.RequiresAuthentication)
{
if(User.Identity.IsAuthenticated)
{
return View(doc);
}
// If the user is not authenticated, redirect them to log on
return RedirectToAction("LogOn", "Account");
}
else
{
return View(doc);
}
}
您甚至可以将 a 传递returnUrl
给登录,这样一旦用户登录,他们就会被重定向回他们想要的文档。