Asp.net mvc 使用会话为MVC和WebAPI创建auth属性

Asp.net mvc 使用会话为MVC和WebAPI创建auth属性,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,我有用于UI的MVC4控制器(angularjs)和一些用于UI数据管理的WebAPI控制器子集。我需要添加身份验证处理程序或两者: class MySuperAuthAttribute{} [MySuperAuth] public class MyWebApiController{} [MySuperAuth] public class MyWebMvcController{} 在auth处理程序中,我只需要检查用户是否在某个组中。我还希望在当前会话中存储此信息(该用户已通过身份验证)

我有用于UI的MVC4控制器(angularjs)和一些用于UI数据管理的WebAPI控制器子集。我需要添加身份验证处理程序或两者:

class MySuperAuthAttribute{}

[MySuperAuth]
public class MyWebApiController{}

[MySuperAuth]
public class MyWebMvcController{}
在auth处理程序中,我只需要检查用户是否在某个组中。我还希望在当前会话中存储此信息(该用户已通过身份验证)

在属性的处理程序中,我可以编写类似于
UserProvider.CheckInGroup(userName)
的内容

我应该如何存储此结果并在下次调用中使用它

例如:

if (HttpContext.Session['MY_AUTH_KEY'] != null && HttpContext.Session["MY_AUTH_KEY"] == "OK") {
    return true;
}
else {
    if (UserProvider.CheckInGroup(userName))
        HttpContext.Session['MY_AUTH_KEY'] = "OK";
    .....
}

不确定您的问题是否足够清楚,但在属性中,您可以使用

HttpContext.Current.Session

只需要对System.Web的引用就可以了。

而ASP中当前使用Session+Auth的方式是在Session中手动存储身份验证结果?或者验证操作是否实现了某种自动化?对于验证操作,现在您需要让属性扩展AuthorizeAttribute(继承它)并在其中访问会话。。因此,只需确保您的属性继承AuthorizeAttribute并处理AuthorizeCore方法。