2011-08-05 55 views
0

我想自定义MVC 3.在家里控制器我设置的作用是在authorize ...定制授权MVC3错误

Session["role"] = "Admin"; 

我收到错误的

SiteRoles role = (SiteRoles)httpContext.Session["role"]; 

说明指定的转换无效。

我没有线索发生了什么。

protected override bool AuthorizeCore(HttpContextBase httpContext) 
{ 
    if (httpContext == null) 
     throw new ArgumentNullException("httpContext"); 

    string[] users = Users.Split(','); 

    if (!httpContext.User.Identity.IsAuthenticated) 
     return false; 

    string role = (string)httpContext.Session["role"]; 

    if (Roles != 0 && ((Roles & role) != role)) 
     return false; 

    return true; 
} 
+0

我也是以下示例在... http://mvchosting.asphostcentral.com/post/ASPNET-MVC-Hosting-Working-with-Custom-Authorisation-in-ASPNET-MVC-Framework.aspx – Beginner

回答

0

您设置会话中的字符串,那么读回来的时候,你应该使用一个字符串:

string role = (string)httpContext.Session["role"]; 

或者,如果你想设置一些自定义类型:

Session["role"] = SiteRoles.Admin; 

然后你将能够:

SiteRoles role = (SiteRoles)httpContext.Session["role"]; 
+0

谢谢!那工作很愚蠢 – Beginner

+0

@Beginner,'SiteRoles'似乎是一个枚举,它被一个整数烘焙=>在编写'Session [“role”] = SiteRoles.Admin;'时,您已经在会话中设置了一个整数。但是你也可以写'Session [“role”] = 1;' –