2010-02-01 22 views
6

Giriş yapma gibi çeşitli şeyler yapmak için jquery modal iletişim kutusundan yararlanan bir sitede çalışıyorum.ASP.NET MVC Yetkilendirme bir model başlatmak için yetkilendirilsin mi?

Ancak; Bunların kullanımıyla ilgili küçük bir sorunumuz var. Bu, eylem yöntemlerinin birçoğunda [Authorize] özelliğini kullanıyoruz ve bunun nedeni, kullanıcının oturum açmamış olması ve ihtiyaç duydukları bir rotaya ulaşmasıdır. bunun için yetkilendirilmiş olması gerektiği gibi giriş sayfasını gösterir, fakat açıkçası bunun bir model olduğunu varsayalım.

Her nasılsa kısa bir hikaye, giriş modalını oluşturan gerçek görünüm yerine modalı tetikleyebilen özel bir yetkilendirme özniteliği oluşturmanın bir yolu var mı?

+0

kullandığınız ASP.NET MVC hangi sürümü: ana sayfası veya diğer ortak görüşüne göre

[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)] public class PopupAuthorizeAttribute : AuthorizeAttribute { private void CacheValidateHandler(HttpContext context, object data, ref HttpValidationStatus validationStatus) { validationStatus = this.OnCacheAuthorization(new HttpContextWrapper(context)); } public override void OnAuthorization(AuthorizationContext filterContext) { bool isAuthorized = false; if (filterContext == null) { throw new ArgumentNullException("filterContext"); } if (this.AuthorizeCore(filterContext.HttpContext)) { HttpCachePolicyBase cache = filterContext.HttpContext.Response.Cache; cache.SetProxyMaxAge(new TimeSpan(0L)); cache.AddValidationCallback(new HttpCacheValidateHandler(this.CacheValidateHandler), null); isAuthorized = true; } filterContext.Controller.ViewData["OpenAuthorizationPopup"] = !isAuthorized; } } 

koşullu oluşturmayı eklemek? –

cevap

5

Bu durumda, kullanıcı yetkilendirilmemişse açılır pencereyi açan özel bir eylem filtresi özniteliği kullanabilirsiniz.
Bu eylem filtresinde, yalnızca kullanıcının oturum açıp açmadığını denetleyin ve ViewData koleksiyonuna bir boolean değeri ekleyin.
Aplly, denetleyicinin eylemindeki öznitelik.
Ardından, ana sayfada pop-up'ı açan kodun koşullu oluşturulmasını ekleyin.

özellik için kod:

<% if((bool)(ViewData["OpenAuthorizationPopup"] ?? true)) { %> 
...Your code to open the popup here... 
<% } %> 
+0

Teşekkürler bu mükemmel çalışır – dswatik

İlgili konular