我有一个使用FormsAuthentication的MVC 5
应用程序。
在FormsAuthentication_OnAuthenticate()
函数中,我使用当前用户权限创建一个新的GenericIdentity。
protected void FormsAuthentication_OnAuthenticate(Object sender, FormsAuthenticationEventArgs e)
{
if (FormsAuthentication.CookiesSupported)
{
var userInfo = AuthenticationHelper.GetUserInfo(Request.Cookies);
if (userInfo != null)
{
e.User = new GenericPrincipal(new GenericIdentity(userInfo.Username,"Forms"),userInfo.RightsStrings);
}
}
}
FormsAuthentication的配置是:
<authentication mode="Forms">
<forms timeout="2" loginUrl="~/Home/Login" slidingExpiration="true" cookieless="UseCookies"></forms>
</authentication>
当我分配新的GenericPrincipal时,slidingExpiration
选项不起作用。
如果我评论滑动过期有效,但我不能使用[Authorize(Roles = "Role")]
语法。
我怎样才能完成两者?