Я пишу приложение ASP.NET MVC 2 и не хочу использовать членство в ASP.NET. Я хочу использовать атрибут авторизации на контроллерах. Что я сделал до сих пор ...
Web.config
<roleManager enabled="true" />
<authentication mode="Forms">
<forms loginUrl="~/Authentication/Login" timeout="2880"/>
</authentication>
<authorization>
<allow users="*" /> /* This is for testing */
</authorization>
В моем Global.asax
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
var cookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
if (cookie == null) return;
var decryptedCookie = FormsAuthentication.Decrypt(cookie.Value);
var roles = decryptedCookie.UserData.Split('|');
var tcmIdentity = new TcmIdentity(decryptedCookie.Name);
var tcmPrincipal = new GenericPrincipal(tcmIdentity, roles);
Context.User = tcmPrincipal;
}
Я использую настраиваемый объект IIdentity, чтобы в будущем добавить некоторые настраиваемые свойства. Чтобы проверить это в моем действии контроллера, я сделал это ...
var testPrincipal = User;
Я могу видеть настраиваемую личность со всей информацией о пользователе, но для основного объекта нет ролей. Любая помощь с тем, что я пропустил, была бы замечательной. Спасибо.