我在asp.net-mvc中放置用于用户身份验证的代码?

时间:2012-11-21 10:48:21

标签: asp.net-mvc redirect authentication

我正在使用Windows身份验证开发MVC内部网。

我有一个文件夹,其中包含只有某些角色才能看到的视图。

我在该文件夹中有一个web.config文件

<?xml version="1.0"?>
<configuration>
    <system.web>
      <authorization>
        <allow roles="Administrator, ICCManager"/>
        <deny users="*"/>
      </authorization>
    </system.web>
</configuration>

我想编写代码以查看用户是否处于其中一个角色,如果没有将其重定向到信息页面。

这是我的第一个MVC项目,我仍然不完全了解我的方式。所以我不知道在哪里编写这段代码。我知道,有点愚蠢,但我还没有得到它。

4 个答案:

答案 0 :(得分:1)

您不必直接配置对视图的访问权限,您可以配置对操作方法的访问权限,然后返回视图。

您可以通过使用[Authorize]属性修饰单个操作方法或整个控制器来完成此操作:

// All actions in this class cannot be called by anonymous users
[Authorize]
public class MyController {

    // This action is just callable by users in role Admin
    [Authorize(Roles="Admin")]
    public ActionResult MyAction() {
        return View();
    }

    // This action is callable by any authorized user (inherited from class)
    public ActionResult MyAction() {
        return View();
    }
}

// Actions from this controller can be called by any user (even unauthorized)
public calls AnotherController {
}

当非允许用户尝试访问某个页面时,该用户将被重定向到您在web.config中loginUrl元素的authentication属性中配置的操作:

<authentication mode="Forms">
    <forms loginUrl="~/Membership/Login" ... />
</authentication>

答案 1 :(得分:0)

这可能是一个很好的起点:

http://theintegrity.co.uk/2010/11/asp-net-mvc-2-custom-membership-provider-tutorial-part-1/

您需要实现一个会员提供商,该提供商可以确定用户拥有的角色等。非常可定制。

答案 2 :(得分:0)

您将检查特定用户的数据库中的记录的代码将位于model类中,您可以将结果从那里返回给控制器。

controller中,您可以处理逻辑,例如,如果用户未获得授权,则将其重定向到其他信息页以查找个人资料页等。

有关更多信息,请阅读一次,这将有助于清除有关ASP MVC的许多其他概念。

ASP.NET MVC Tutorial

答案 3 :(得分:0)

在控制器方法上使用AuhtorizeAttribute将限制设置为操作,并在web.config中设置身份验证标记中的表单身份验证,并将登录页面设置为您需要的页面。如果它不是登录页面而只是信息,请打开global.asax并覆盖Application_AuthenticateRequest方法。

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
        if (User.Identity.IsAuthenticated)
        {
            //redirect
        }       
}