asp.net mvc 统一身份验证问题、怎么实现?
.netwebform可以利用page的事件进行统一身份验证,写一个类继承自System.Web.UI.Page,里面实现验证,然后其它页面继承自这个类就可以实现验证了;...
.net webform 可以利用page 的事件进行统一身份验证,写一个类继承自System.Web.UI.Page ,里面实现验证,然后其它页面继承自这个类就可以实现验证了;;;
因为在mvc里没load事件,所以不能照搬,那么在.net mvc 里怎么实现呢? 曾听过有人说过类似的方法,但当时没注意。。而且还有另外一种方法。。
请问.net mvc 统一身份验证 怎么实现,有几种方法实现?
比如: 只需一次session判断,需要授权的control 或者action 就可以访问。 展开
因为在mvc里没load事件,所以不能照搬,那么在.net mvc 里怎么实现呢? 曾听过有人说过类似的方法,但当时没注意。。而且还有另外一种方法。。
请问.net mvc 统一身份验证 怎么实现,有几种方法实现?
比如: 只需一次session判断,需要授权的control 或者action 就可以访问。 展开
2个回答
展开全部
MVC里有AuthorizeAttribute特性,直接标记在Controller类上或者在控制器操作上。
[Authorize]
public class ArticleController : Controller
{
[Authorize]
public ActionResult Index()
{
return View();
}
}
如果用户没有登录,就会跳转到登录页面。也可以自定义扩展AuthorizeAttribute,实现自定义的验证。建议你买本书看,一两句话说不清楚。
[Authorize]
public class ArticleController : Controller
{
[Authorize]
public ActionResult Index()
{
return View();
}
}
如果用户没有登录,就会跳转到登录页面。也可以自定义扩展AuthorizeAttribute,实现自定义的验证。建议你买本书看,一两句话说不清楚。
更多追问追答
追问
我想知道的是不用 mvc 的Authorize特性, 如果有多个不同登录验证,返回的也是多个不同页面,那用Authorize 好像不好使。
追答
可以的,自定义扩展一下就行了:
public class CustomAuthorizeAttribute : System.Web.Mvc.AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext == null)
{
throw new ArgumentNullException("HttpContext");
}
if (!httpContext.User.Identity.IsAuthenticated)
{
return false;
}
string userName = httpContext.User.Identity.Name
///根据用户名从数据库中获取用户,实现自定义验证。
return false;
}
public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext)
{
///
base.OnAuthorization(filterContext);
}
}
MVC中的验证要比webform灵活,而且我认为这种方法要比webform中自定义类继承System.Web.UI.Page更好。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询