我有WebMatrix
个应用,我正在使用WebSecurity.GetUserId(Http.Current.User.Identity.Name)
来抓取UserID
。有时它返回UserId
,然后返回-1
。因此,我有一个登录页面,它应该是登录到应用程序的人的UserId
。
这是我的代码:
var UserId = WebSecurity.GetUserId(HttpContext.Current.User.Identity.Name);
var User = WebSecurity.CurrentUserName;
var UserEmail = WebSecurity.CurrentUserName;
var dbApp = Database.Open("ApplicationServices");
var selectUser = "SELECT UserId, UserName, Location FROM LocationTable, UserTable WHERE (UserId) = (@0) AND (UserLocation) = (Id)";
var person = dbApp.QuerySingle(selectUser, UserId);
为什么它不一致?
答案 0 :(得分:1)
您(或您的用户)可能只是遇到session timeout(即WebSecurity.CurrentUserId = -1),在这种情况下,您希望将用户重定向回登录页面一次他们已经超时了。您需要确定是使用表单身份验证,Windows身份验证还是(ick)服务器会话以确定/设置超时值,并根据需要进行测试。
对您的用户而言,最好的办法是使用AuthorizeAttribute/AuthorizeCore及其HandleUnauthorizedRequest方法在会话到期时将其重定向回您的登录页面。