MVC - 如果没有登录,网站仍然可以访问?

时间:2013-06-14 15:38:54

标签: c# asp.net-mvc authentication web-applications

我正在将现有的ASP.Net webapp转换为MVC / Entity Framework,我遇到了登录功能的问题。

我的登录页面正常工作,也就是说,如果他们没有输入正确的信息,它就不会重定向到我的起始页面。但是,如果用户手动输入URL,则仍可访问起始页。

我对MVC很新,并且之前并没有真正创建过具有工作登录的网站。有人可以指导我从哪里开始,以保​​护我的网站免受匿名用户的侵害吗?

2 个答案:

答案 0 :(得分:7)

ASP.NET MVC有一个简称为Authorize的属性,您可以使用以下命令修饰控制器:

[Authorize]
public class YourController {

}

这将要求用户进行身份验证,以便点击控制器上的任何操作。

如果您需要在整个控制器中进行不同的身份验证,也可以在操作级别指定此项:

public class YourController {
    public ActionResult OpenToTheWorld() {

    }

    [Authorize]
    public ActionResult GottaLogIn() {

    }
}

最后一个注意事项......如果像我一样,您只需要允许某些群组访问控制器和操作,您也可以使用Authorize属性执行此操作:

[Authorize(Roles = "Administrators, Editor")]

我个人不喜欢像这样硬编码的字符串,所以我推出了自己的属性,接受了适当的对象:

[MyAuthorize(Roles = new string[] { SiteRoles.Administrator, SiteRoles.Editor })]

答案 1 :(得分:2)

您是否在主页控制器上使用了[Authorize]属性?

我猜不是。否则,用户将自动重定向到“登录”页面。