2011-08-30 35 views
28

Tôi có một lỗi lạ mà tôi chưa bao giờ gặp phải trước đây.bị chuyển hướng đến sai loginUrl -> tài khoản/đăng nhập thay vì tài khoản/LOGON

tôi đảm bảo một bộ điều khiển với:

[Authorize(Roles = "admin")] 
public class LoggingController : Controller 

Khi người dùng không phải quản trị cố gắng truy cập bất kỳ nội dung được bảo vệ, họ đang chuyển hướng đến:

http://localhost:50501/Account/Login?ReturnUrl=%2flogging

lưu ý: tài khoản/đăng nhập và KHÔNG tài khoản/đăng nhập

Hành động AccountController.Login không tồn tại.

web.config có:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
</authentication> 

tôi dĩ nhiên có thể thực hiện các hành động đăng nhập và chuyển hướng Logon. Tôi chỉ bối rối và muốn biết tại sao điều này xảy ra.

Trả lời

25

Tìm kiếm dự án của bạn để đăng nhập - nó phải được chỉ định ở đâu đó. Có giá trị web.config nào khác ghi đè điều này (có thể nhìn vào một thư mục con và giá trị cha mẹ đang được sử dụng) Ngoài ra có bất kỳ chuyển hướng nào đang xảy ra không? Có bất kỳ giá trị mặc định nào được đặt trong web.config của máy không? Url mặc định của bạn trên dự án được đặt thành/đăng nhập phải không?

Cài đặt trình gỡ lỗi lộ trình để xem tuyến đường nào đang được sử dụng cho trang này.

CHỈNH SỬA: Một ít nghiên cứu khác mang lại một vấn đề đã biết. Khám phá liên kết này: ASP.NET MVC issue with configuration of forms authentication section

Có lỗi trong mvc 3 beta - bạn có đang chạy bit beta không? Cũng cần chú ý các mục được đề cập trong url trên cho RTM bit:

<add key="loginUrl" value="~/LogOn" /> 

Ngoài ra kiểm tra http://forums.asp.net/p/1616153/4138366.aspx

EDIT 2

Dưới đây là một lời nhận xét rắn về một nguồn tiềm năng này từ @santiagoIT (upvote bình luận của mình xin vui lòng nếu các chi tiết cụ thể giúp bạn)

Hôm nay tôi phát hiện ra gốc rễ của vấn đề này: tôi đã có đã thêm 'dependable dependency' vào 'ASP.NET Web Pages with Razor Syntax'. Điều này cho biết thêm một tham chiếu đến: WebMatrix.Data.dll Hội đồng này có một lớp học với một constructor tĩnh mà hiện sau: static FormsAuthenticationSettings() {FormsAuthenticationSettings.LoginUrlKey = "loginUrl"; FormsAuthenticationSettings.DefaultLoginUrl = "~/Account/Login";} Điều đó giải thích!

+0

Tôi đã tìm kiếm thông tin đăng nhập nhưng không có gì bật lên. Tôi sẽ thử đề xuất của bạn vào ngày mai. Tôi đang sử dụng web api wcf đó là điều duy nhất tôi sẽ xem xét ra khỏi bình thường. stilll rất bối rối ... – santiagoIT

+0

xem chỉnh sửa ở trên –

+0

Thx! Tôi đã thêm vào appSetting và nó hoạt động. Tôi chắc chắn hy vọng tôi không chạy mvc 3 beta. System.Web.Mvc.dll của tôi hiển thị v3.0.0.0. Đây có phải là phiên bản beta không? – santiagoIT

3

này đã làm việc cho tôi và tôi đang sử dụng MVC 3

<appSettings> 
    <add key="loginUrl" value="~/Account/LogOn" /> 
</appSettings> 
<system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/LogOn" name=".ASPXFORMSAUTH" /> 
    </authentication> 
</system.web> 

Ngoài ra tôi thấy rằng việc thêm phần followinf để cấu hình web (chỉ trong thời gian gỡ lỗi config) giúp tăng tốc độ gỡ lỗi của tôi là phải xác thực cho bất kỳ trang nào.

<authorization> 
    <deny users="?" /> <!-- remove after debugging --> 
</authorization> 
1

tôi cố định nó theo cách này

1) Go ot IIS

2) Chọn dự án của bạn

3) Nhấp vào "Xác thực"

4) Click vào " Xác thực ẩn danh "> Chỉnh sửa> chọn" Nhận dạng hồ bơi ứng dụng "thay vì" Người dùng cụ thể ".

5) Xong.

2

Chỉ cần xóa tệp WebMatrix dll nếu chúng hiện diện trong thư mục bin được triển khai của bạn.

Các vấn đề liên quan