我正在测试Basic Http Authentication。我尝试去一个页面,但是当我去“书籍/得到”时,我什么也看不见。为什么?我应该添加什么?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Net.Http.Headers;
using System.Security.Principal;
using System.Text;
using System.Threading;
namespace WebApiTest.Controllers
{
public class BooksController : Controller
{
[Authorize]
public String Get()
{
String res = "Hello";
return res;
}
public ActionResult Index()
{
return View();
}
}
}
答案 0 :(得分:3)
当您使用Authorize
修饰方法时,除非经过身份验证,否则您实际上无法访问该操作结果。如果您什么也看不见,那么您需要在web.config中配置loginUrl
,例如:
<system.web>
<authentication mode="Forms">
<forms loginUrl="http://yoursite.co.uk/login timeout="2880"/>
</authentication>
<authorization>
<deny users="?" />
</authorization>
答案 1 :(得分:0)
[Authorize]
是MVC框架中的默认实现。它使用@mattytommo提到的表单身份验证
public class AuthorizeAttribute : FilterAttribute, AuthorizationFilter
并使用
protected virtual bool AuthorizeCore(HttpContextBase httpContext)
{
}
如果您想创建自己的自定义授权,可以查看ASP.NET MVC 4 Custom Authorize Attribute with Permission Codes (without roles)