Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MVC自定义身份验证_C#_Asp.net Mvc_Asp.net Mvc 3_Form Authentication - Fatal编程技术网

C# 使用MVC自定义身份验证

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

我想用MVC3创建自定义身份验证

用户将有一个登录表单,在其中输入用户ID和密码。 然后根据我的业务逻辑验证这些凭据。我不能使用默认过程,比如从用户表验证它,然后分配角色等

我的业务逻辑将为我提供一个boolen值IsValidUser和UserRole

问题:我需要做两件事:
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”]。这将为您查找的任何内容获取会话变量。