使用MVC进行自定义身份验证
问题描述:
我想使用MVC3创建自定义身份验证。使用MVC进行自定义身份验证
Scenerio ::用户将有一个登录表单,在那里他将输入userId和密码。 然后根据我的业务逻辑对这些凭据进行验证。我不能使用默认过程,如从用户表中验证它,然后分配角色等。
我的业务逻辑将为我提供一个可靠的值IsValidUser和UserRole。
问题::我需要做两件事:
1.使用由AuthoriseAttribute过滤器中的业务逻辑返回的这些值。这样我就可以限制用户访问某个控制器的任何特定动作(我曾尝试将这些值放在Session变量中,但无法在授权过滤器中使用它们。)
2.如何使用Formsauthentication.Setauthcookie来完成这个任务。
答
进行自定义验证你可以使用“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);
}
}
所以它是这样的,我得保存在session变量这些值,然后通过这些付诸行动网络滤池?这是正确的方式吗?因为我需要找到该用户在许多其他控制器中进行身份验证。 – Moody
是的,你必须在你的商业逻辑中将用户ID存储到会话中。你可以从ActionFilter中的会话中检索它。 另一个参数是RoleID,您可以根据需要将其存储到枚举类或数据库中。 –
我们无法在ActionFilter中访问Session变量:) – Moody