2016-12-07 48 views
1

我想使用MVC3创建自定义身份验证。使用MVC进行自定义身份验证

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

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

问题::我需要做两件事:
1.使用由AuthoriseAttribute过滤器中的业务逻辑返回的这些值。这样我就可以限制用户访问某个控制器的任何特定动作(我曾尝试将这些值放在Session变量中,但无法在授权过滤器中使用它们。)
2.如何使用Formsauthentication.Setauthcookie来完成这个任务。

回答

3

进行自定义验证你可以使用“ActionFilters”类授权perticular控制器,你可以通过那些你在财产形式的“楼内设有商务逻辑”获得的参数,

操作方法,

[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); 
    } 
} 
+0

所以它是这样的,我得保存在session变量这些值,然后通过这些付诸行动网络滤池?这是正确的方式吗?因为我需要找到该用户在许多其他控制器中进行身份验证。 – Moody

+0

是的,你必须在你的商业逻辑中将用户ID存储到会话中。你可以从ActionFilter中的会话中检索它。 另一个参数是RoleID,您可以根据需要将其存储到枚举类或数据库中。 –

+0

我们无法在ActionFilter中访问Session变量:) – Moody

相关问题