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;
すべてのユーザー情報を含むカスタム ID を確認できますが、プリンシパル オブジェクトにはロールがありません。私が逃したものについての助けは素晴らしいでしょう。ありがとう。