首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法执行有条件的身份验证?

有没有办法执行有条件的身份验证?
EN

Stack Overflow用户
提问于 2012-09-20 08:08:26
回答 2查看 490关注 0票数 0

我们正在创建一个MVC4文档检索站点,其中一些文档需要身份验证,而其他文档则允许匿名访问。

该URL包括用于检索文档列表的文件夹id。有时没有文档需要身份验证,有时所有文档都需要身份验证,有时是混合的。

我该如何解决这个问题呢?提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-20 10:13:21

我将向包含文档的数据库表中添加一个bool RequiresAuthentication项。如果文档是免费的(不需要身份验证),则为false;如果不是,则为true

然后,您可以在为文档提供服务的控制器中执行类似这样的操作。

代码语言:javascript
复制
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);
    }
}

您甚至可以向登录用户传递一个returnUrl,这样一旦用户登录,他们就会被重定向回他们想要的文档。

票数 0
EN

Stack Overflow用户

发布于 2012-09-20 10:24:15

您可以针对获取可能受限制的文档的操作创建自定义授权筛选器。

它将首先检查文档是否需要授权,方法是将其与受限制文档的静态缓存ID列表进行比较。

然后,如果文档受到限制,筛选器将检查当前用户是否获得授权。如果用户已获得授权,则操作将正常呈现。否则,应将操作结果放入401/403 (视情况而定)或重定向到默认的“未授权”页面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12504516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档