Asp.net mvc 如何在MVC4中实现无Membership的登录认证
在MVC4中,我手动添加了身份验证,我的意思是,没有成员资格 它将只获取用户名和密码,并根据数据库进行身份验证 现在,我将如何允许有效(认证)用户与其他控制器交互,因为我已在所有其他控制器上添加了Asp.net mvc 如何在MVC4中实现无Membership的登录认证,asp.net-mvc,asp.net-mvc-4,login,forms-authentication,Asp.net Mvc,Asp.net Mvc 4,Login,Forms Authentication,在MVC4中,我手动添加了身份验证,我的意思是,没有成员资格 它将只获取用户名和密码,并根据数据库进行身份验证 现在,我将如何允许有效(认证)用户与其他控制器交互,因为我已在所有其他控制器上添加了Authorize注释,并希望仅限制认证用户应允许访问其他控制器的操作方法。。请指导我如何在不使用会员资格的情况下实现这一点 谢谢一种方法是编写自己的自定义授权属性: public class CustomAuthorizeAttribute : AuthorizeAttribute {
Authorize
注释,并希望仅限制认证用户应允许访问其他控制器的操作方法。。请指导我如何在不使用会员资格的情况下实现这一点
谢谢一种方法是编写自己的自定义授权属性:
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
Entities context = new Entities(); // my entity
private readonly string[] allowedroles;
public CustomAuthorizeAttribute(params string[] roles)
{
this.allowedroles = roles;
}
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool authorize = false;
foreach (var role in allowedroles)
{
var user = context.AppUser.Where(m => m.UserID == GetUser.CurrentUser/* getting user form current context */ && m.Role == role &&
m.IsActive == true); // checking active users with allowed roles.
if (user.Count() > 0)
{
authorize = true; /* return true if Entity has current user(active) with specific role */
}
}
return authorize;
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new HttpUnauthorizedResult();
}
}
然后使用它:
[CustomAuthorize(“Administrator”)
public ActionResult SomeAction()
{
return View();
}
看
也可以编写自定义操作筛选器属性,请参见
我最近实现的另一种方法是定义您自己的基本控制器并从中继承其他控制器:
谢谢,这一切都会有帮助。但我想知道,如果我们只是简单地设置AUTHCOOKIE并在每个控制器上应用authorize属性,这难道不可能吗
Authorize
attribute要检查什么来识别用户是否经过身份验证?我不知道,但我告诉customauth属性、custom action filter属性或您自己的基本控制器有很多选项