8

ben asp.net MVC3 uygulamasında aşağıdaki koşula sahip özel bir AuthorizeAttribute yazdımvarsayılan giriş url

<authentication mode="Forms"> 
    <forms loginUrl="~/User/SignIn" timeout="2880" /> 
</authentication> 

Kimlik doğrulama başarısız olduğunda, varsayılan olarak "/ Hesap/Giriş" sayfasına yönlendirir.

Bu varsayılan yönlendirme URL'sini nasıl değiştiririm ve "/ User/SignIn" adresine yönlendiririm? i '/ signin/Kullanıcı, bu yönlendirmeleri belirledik rağmen

ekran görüntüsü ı söylemeye çalışıyorum ne berrak görünümünü gösterir .. HttpUnauthorizedresult image

için '/ Hesap/Giriş'

+0

görüyor musunuz? –

+0

Evet. MVC3 kullanıyorum. – Prasad

+3

Bir mücadeleden sonra çözümü aldım. Son zamanlarda WebMatrix.WebData referansı ekledim, bu sorunun gerçek suçlu gibi görünüyor. Bu, config dosyanıza anahtarı ekleyerek işlenebilir: Prasad

cevap

9

Ben bu ekleyebilirsiniz emin değilim Bir cevap. Ancak bu, bu konuyla ilgilenen diğerlerine yardımcı olabilir.

Çözümü bir mücadeleden sonra anladım. Son zamanlarda WebMatrix.WebData referansı ekledim, bu sorunun gerçek suçlu gibi görünüyor. Bu yapılandırma dosyası anahtarı ekleyerek ele alınabilir: Geçenlerde bu sorunu vardı ve Projemde başvurulan WebMatrix.dll komik çünkü bulundu

<add key="loginUrl" value="~/User/SignIn" /> 
+6

Anahtar web.config'inizdeki AppSettings bölümüne eklenmelidir. –

+0

Sanırım normalde appSettings bölümüne :) yukarıdaki gibi tuşlar ekliyoruz. – Prasad

+0

@Prasad Ben zaten birkaç saat geçirdim ... Burada geri gönderme ve günümün geri kalanını kurtarmak için bir demet teşekkürler! – spender

2

Gitmelisiniz loginUrl için root olanı değiştirmek.

AuthorizationAttribute'u oluşturdum ... düzgün bir şekilde yeniden yönlendiriyor örn.

<authentication mode="Forms"> 
    <forms loginUrl="~/Authenticate/SignIn" timeout="2880"/> 
</authentication> 

ve benim niteliktir:

public class AuthorizationAttribute : AuthorizeAttribute 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     base.OnAuthorization(filterContext); 

     if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
     { 
      filterContext.Result = new HttpUnauthorizedResult(); 
     } 
    } 
} 

ve gerektiğinde kontrolörünüzün herhangi bir yönteme niteliği uygular ...

[AuthorizationAttribute()] 
public ActionResult Index() 
{ 
    return View(); 
} 
+0

Kök yapılandırmasında değiştirdim. Ama/Acccount/Login sayfasına yönlendiriyordu ve 404 sayfa atar, çünkü böyle bir denetleyicim yok. – Prasad

+0

Bunu yapmak için şu anda garip bir şekilde POC'im var ve web.conf'ta (root one) belirtilen Action'a yönlendirilmesi beklendiği gibi çalışıyor ... –

+0

Eksik olduğumu kontrol etmek için Müşteri Yetkilendirme Özniteliği kodunu gönderir misiniz? şey var mı? – Prasad

İlgili konular