2015-05-07 40 views
1

我有一個登錄頁面,匿名訪問者可以填寫表單以執行操作。 在控制器方面,我們將其稱爲VoteController,我想註冊並與行動業務邏輯(投票)一起登錄用戶。使用其他控制器創建和驗證新用戶

我試過了下面的代碼,它似乎可以工作,但是無論何時用戶繼續瀏覽網站,它在包含@Html.AntiForgeryToken()的每個頁面上都會收到錯誤,看起來聲稱出現了問題。

var claims = new List<Claim>(); 
claims.Add(new Claim(ClaimTypes.Name, a.UserName)); 
claims.Add(new Claim(ClaimTypes.Email, model.Email)); 

var id = new ClaimsIdentity(claims, Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ApplicationCookie); 

var ctx = Request.GetOwinContext(); 
var authenticationManager = ctx.Authentication; 
authenticationManager.SignIn(id); 

任何幫助將不勝感激。

+0

你得到了哪些錯誤? –

+0

只要用戶通過調用@ Html.AntyForgeryToken()發現頁面,就會發生以下異常: System.Web.WebPages.dll中發生類型「System.InvalidOperationException」的異常,但未在用戶代碼 中處理 附加信息:所提供的ClaimsIdentity上不存在「http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier」類型的聲明。 – marfin

回答

0

嘗試在global.asax.cs設置Application_Start方法中的AntiForgeryConfig.UniqueClaimTypeIdentifier屬性,例如:

protected void Application_Start() 
{ 
     AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier; 
} 
+0

我已經試過,但沒有改變:( – marfin

相關問題