‫۱۰ سال و ۸ ماه قبل، شنبه ۱۹ بهمن ۱۳۹۲، ساعت ۱۳:۵۷
ممنون،
فقط یک نکته چاپگر Microsoft Office Document Image Writer از آفیس 2010 به بعد حذف شده، آیا برای این مورد راه حلی سراغ دارید؟
البته در آفیس 2007 به صورت پیش فرض نصب نیست و باید این صورت  نصبش کنیم.
‫۱۰ سال و ۸ ماه قبل، سه‌شنبه ۸ بهمن ۱۳۹۲، ساعت ۰۰:۳۸
روش خیلی خوبیه ممنون، توی مقاله که ذکر کردیدخودش سه روش رو جهت چک کردن Role Membership پیشنهاد داده: 
[PrincipalPermissionAttribute(SecurityAction.Demand, Role = "MyRole")]
2- فراخوانی متد IsInRole
3- از طریق web.config
ولی می‌تونیم از فیلتر Authorize به جای مورد اول استفاده کنیم. مورد بعدی : کد زیر رو باید داخل رویداد Application_Start اضافه کرد :
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

‫۱۰ سال و ۸ ماه قبل، دوشنبه ۷ بهمن ۱۳۹۲، ساعت ۱۸:۵۹
ممنون، تا اینجاش رو مشکلی ندارم و به این صورت که گفتید پیاده سازی کردم :
[HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult LogOn(User user, string returnUrl)
        {
            if (this.ModelState.IsValid)
            {
                if (_userService.IsValid(user))
                {
                    int userID = _userService.GetUser(u => u.Username == user.Username && u.Password == user.Password).Id;
                    FormsAuthentication.SetAuthCookie(userID.ToString(CultureInfo.InvariantCulture), user.RememberMe);
                    if (shouldRedirect(returnUrl))
                    {
                        return Redirect(returnUrl);
                    }
                    FormsAuthentication.RedirectFromLoginPage(userID.ToString(CultureInfo.InvariantCulture), user.RememberMe);
                }
            }
            this.ModelState.AddModelError("", "The user name or password provided is incorrect.");
            ViewBag.Error = "Login faild! Make sure you have entered the right user name and password!";
            return View(user);
        }
در این صورت Id هم صفر نیست و مقدار به درستی داخل کوکی ذخیره می‌شود، مشکل اصلی من این اجرای چند گانه است یعنی موقعی که کنترلری را با ویژگی Authorize و تعیین Role و یا User مزین می‌کنم میدهد خطای Attempted to perform an unauthorized operation را میدهد.
‫۱۰ سال و ۸ ماه قبل، دوشنبه ۷ بهمن ۱۳۹۲، ساعت ۱۵:۰۷
قسمت type مشکلی نداره، breakpoint رو وقتی داخل متد GetRolesForUser قرار میدم فراخوانی میشه ولی چون مقدار Id صفر درنظر گرفته شده نمی‌تونه Role موردنظر رو برای این Id توی دیتابیس پیدا کنه، موقع لاگین فقط UserName و Password توسط سیستم Binding یرای متد Login فرستاده میشه :

وقتی در فرم لاگین هم به صورت دستی Id رو ارسال میکنم، باز هم پیام Attempted to perform an unauthorized operation. دریافت میکنم. آیا تغییری دیگری در View لاگین نیاز هست اعمال بشه؟

‫۱۰ سال و ۸ ماه قبل، پنجشنبه ۳ بهمن ۱۳۹۲، ساعت ۲۱:۲۳
- اگر از فیلتر Authrozie استفاده کنم البته به صورت  [Authorize(Roles="Admins")] حالت loop پیش میاد بنابراین برای رفع این مشکل از روش که خودتون گفتین استفاده کردم یعنی [SiteAuthorize(Roles="Admins")]  ، در این حالت خطای Attempted to perform an unauthorized operation.  را دریافت میکنم.
- مقدار User.Identity.Name در صورت استفاده از فیلتر Authrozie یا SiteAuthorize (بدون تعیین کاربر و یا نقش) در یک صفحه معمولی مقدار صفر را برمیگرداند.
- breakpoint هم گذاشتم از صدا زده نمی‌شود. 
‫۱۰ سال و ۸ ماه قبل، پنجشنبه ۳ بهمن ۱۳۹۲، ساعت ۲۰:۱۰
خیلی ممنون،
User.Identity.Name مقدار صفر رو برمیگردونه، این موارد رو هم چک کردم :
- authentication mode=Forms
FormsAuthentication.SetAuthCookie(user.Id.ToString(CultureInfo.InvariantCulture), user.RememberMe);
FormsAuthentication.RedirectFromLoginPage(user.Id.ToString(CultureInfo.InvariantCulture), user.RememberMe);
RoleProvider سفارشی رو هم در web.config ثبت کردم به این صورت :
<roleManager enabled="true" defaultProvider="CustomRoleProvider"
      cacheRolesInCookie="true">
        <providers>
          <clear />
          <add name="CustomRoleProvider"
               type="MyApp.Web.Helper.CustomRoleProvider"/>
        </providers>
      </roleManager>
یک مورد دیگر اینکه در حالت [Authorize(Roles="Admins")] و یا [Authorize(Users="user1")]  حالت loop که اینجا  گفته شده رخ میدهد (ظاهراً کاربران و نقش‌ها رو به درستی از دیتابیس دریافت نمی‌کند)، به نظر شما مشکل از کجا می‌تواند باشد؟(می دونم امکان دیباگ از راه دور وجود ندارد، ولی گفتم شاید موردی رو از قلم انداخته باشم).
‫۱۰ سال و ۸ ماه قبل، پنجشنبه ۳ بهمن ۱۳۹۲، ساعت ۱۳:۱۵
ممنون، عالیه
فقط این ToInt به چه صورت username را به int تبدیل میکنه؟
‫۱۰ سال و ۸ ماه قبل، پنجشنبه ۳ بهمن ۱۳۹۲، ساعت ۱۲:۱۴
ببخشید، من منظورم کلاس RoleService است،  اینترفیس IRoleService را به این صورت تعریف کرده ام :
public interface IRoleService
    {
        bool IsUserInRole(string username, string roleName);
        string[] GetRolesForUser(string username);
        void AddUsersToRoles(string[] usernames, string[] roleNames);
        string ApplicationName { get; set; }
        void CreateRole(string roleName);
        bool DeleteRole(string roleName, bool throwOnPopulatedRole);
        string[] FindUsersInRole(string roleName, string usernameToMatch);
        string[] GetAllRoles();
        string[] GetUsersInRole(string roleName);
        void RemoveUsersFromRoles(string[] usernames, string[] roleNames);
        bool RoleExists(string roleName);
    }
کلاس CustomRoleProvider هم که همونطور که فرمودید باید پیاده سازی کنیم، حالا من منظورم کلاس RoleService است :
public class RoleService: IRoleService
{
        private readonly IDbSet<Role> _role;
        private readonly IUnitOfWork _uow;
        public RoleService(IUnitOfWork uow)
        {
            _uow = uow;
            _role = uow.Set<Role>();
        }
        public bool IsUserInRole(string username, string roleName)
        {
            throw new NotImplementedException();
        }
        public string[] GetRolesForUser(string username)
        {
            throw new NotImplementedException();
        }
//...
}

‫۱۰ سال و ۸ ماه قبل، پنجشنبه ۳ بهمن ۱۳۹۲، ساعت ۰۳:۲۷
در این حالت پیاده سازی کلاس RolesProvider باید به چه صورتی باشد؟