2

我有一个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")]语法。

我怎样才能做到这两点?

4

0 回答 0