我有一个MVC 5
使用 FormsAuthentication 的应用程序。在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")]
语法。
我怎样才能做到这两点?