Asp.net mvc 使用会话为MVC和WebAPI创建auth属性
我有用于UI的MVC4控制器(angularjs)和一些用于UI数据管理的WebAPI控制器子集。我需要添加身份验证处理程序或两者: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处理程序中,我只需要检查用户是否在某个组中。我还希望在当前会话中存储此信息(该用户已通过身份验证)
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方法。