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

Keh*_*mme 5 c# authentication asp.net-mvc web-applications

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

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

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

Jus*_*son 7

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

[Authorize]
public class YourController {

}
Run Code Online (Sandbox Code Playgroud)

这将要求用户进行身份验证,以便在控制器上执行任何操作.

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

public class YourController {
    public ActionResult OpenToTheWorld() {

    }

    [Authorize]
    public ActionResult GottaLogIn() {

    }
}
Run Code Online (Sandbox Code Playgroud)

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

[Authorize(Roles = "Administrators, Editor")]
Run Code Online (Sandbox Code Playgroud)

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

[MyAuthorize(Roles = new string[] { SiteRoles.Administrator, SiteRoles.Editor })]
Run Code Online (Sandbox Code Playgroud)