C# 使用MVC自定义身份验证
我想用MVC3创建自定义身份验证 用户将有一个登录表单,在其中输入用户ID和密码。 然后根据我的业务逻辑验证这些凭据。我不能使用默认过程,比如从用户表验证它,然后分配角色等 我的业务逻辑将为我提供一个boolen值IsValidUser和UserRole 问题:我需要做两件事:C# 使用MVC自定义身份验证,c#,asp.net-mvc,asp.net-mvc-3,form-authentication,C#,Asp.net Mvc,Asp.net Mvc 3,Form Authentication,我想用MVC3创建自定义身份验证 用户将有一个登录表单,在其中输入用户ID和密码。 然后根据我的业务逻辑验证这些凭据。我不能使用默认过程,比如从用户表验证它,然后分配角色等 我的业务逻辑将为我提供一个boolen值IsValidUser和UserRole 问题:我需要做两件事: 1.在AuthorizationAttribute筛选器中使用业务逻辑返回的这些值。因此,我可以限制用户访问控制器的任何特定操作。(我已尝试将这些值放入会话变量中,但无法在授权筛选器中使用它们。) 2.如何使用Forms
1.在AuthorizationAttribute筛选器中使用业务逻辑返回的这些值。因此,我可以限制用户访问控制器的任何特定操作。(我已尝试将这些值放入会话变量中,但无法在授权筛选器中使用它们。)
2.如何使用Formsauthentication.Setauthcookie完成此任务 对于自定义身份验证,您可以使用“ActionFilters”类对特定控制器进行授权,并可以以属性的形式传递从“业务逻辑”中获取的参数 行动方法
[MyActionFilter(Property1 = "Value1", Property2 = "Value2")]
public ActionResult Index()
{
return View();
}
和行动过滤器将是这样的
public class MyActionFilter : ActionFilterAttribute
{
public string Property1 { get; set; }
public string Property2 { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
}
}
这样,我必须将这些值保存在会话变量中,然后将它们传递到操作过滤器??这条路对吗?因为我需要发现用户在许多其他控制器中也经过身份验证。是的,您必须将用户ID存储到业务逻辑中的会话中。您可以从ActionFilter中的会话中检索它。另一个参数是RoleID,您可以根据需要将其存储到enum类或数据库中。我们无法访问ActionFilter中的会话变量:)我们可以访问ActionFilter中的会话数据可能是您做错了什么。如果这个解决方案对你有帮助。您可以将其标记为答案,您可以从MyActionFilter访问会话变量。为此,请使用以下命令:HttpContext.Current.Session[“sessionVariableName”]。这将为您查找的任何内容获取会话变量。