Я пишу приложение ASP.NET MVC 2 и не хочу использовать членство в ASP.NET. Я хочу использовать атрибут Authorize на контроллерах. То, что я сделал до сих пор, это ...
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;
Я вижу пользовательское удостоверение со всей пользовательской информацией, но в основном объекте нет ролей. Любая помощь с тем, что я пропустил, была бы великолепна. Спасибо.