একটি ফর্মের মডেলটিতে আমি বর্তমান লগ-ইন করা ব্যবহারকারী দ্বারা পেয়েছিলাম:
Page.CurrentUser
আমি কীভাবে এএসপি.এনইটি এমভিসিতে একটি নিয়ামক শ্রেণীর অভ্যন্তরে বর্তমান ব্যবহারকারীকে পেতে পারি?
একটি ফর্মের মডেলটিতে আমি বর্তমান লগ-ইন করা ব্যবহারকারী দ্বারা পেয়েছিলাম:
Page.CurrentUser
আমি কীভাবে এএসপি.এনইটি এমভিসিতে একটি নিয়ামক শ্রেণীর অভ্যন্তরে বর্তমান ব্যবহারকারীকে পেতে পারি?
উত্তর:
আপনার যদি কনট্রোলারের মধ্যে থেকে ব্যবহারকারীটি পেতে হয় তবে কন্ট্রোলারের User
সম্পত্তিটি ব্যবহার করুন । যদি আপনার ভিউ থেকে এটির প্রয়োজন হয় তবে আপনার বিশেষত যা প্রয়োজন তা আমি উত্পন্ন করব ViewData
, বা আপনি কেবল ব্যবহারকারী হিসাবে কল করতে পারেন কারণ আমি মনে করি এটি এর সম্পত্তি ViewPage
।
আমি খুঁজে পেয়েছি যে User
কাজ করে, যে, User.Identity.Name
বা User.IsInRole("Administrator")
।
Imports System.Web
আরও যোগ্যতা অর্জন করতে হবে HttpContext.Current.User.Identity.Name
বা সরাসরি যোগ্যতা অর্জন করতে হবে:System.Web.HttpContext.Current.User.Identity.Name
ব্যবহার করে দেখুন HttpContext.Current.User
।
সার্বজনিক অংশ প্রপার্টি বর্তমান () হিসেবে System.Web.HttpContext
System.Web.HttpContext সদস্যসংক্ষিপ্তসার:
বর্তমান এইচটিটিপি অনুরোধের জন্য সিস্টেমটি পায় বা সেট করে e ওয়েবে H হিট্প কনটেক্সট অবজেক্ট।রিটার্ন মানগুলি:
বর্তমান এইচটিটিপি অনুরোধের জন্য সিস্টেম.ডাব্লুএইচটিপি কনটেক্সট
আপনি এএসপি.নেট এমভিসি 4 তে ব্যবহারকারীর নাম পেতে পারেন:
System.Web.HttpContext.Current.User.Identity.Name
'System.Web.HttpContextBase' does not contain a definition for 'Current' and no extension method 'Current' accepting a first argument of type 'System.Web.HttpContextBase' could be found
, আমি এই মত একটি পরম কল করার পরামর্শ দিচ্ছি, হবে System.Web.HttpContext.Current.User.Identity.Name
।
আমি ব্যবহার করি:
Membership.GetUser().UserName
আমি নিশ্চিত নই যে এটি এএসপি.নেট এমভিসিতে কাজ করবে, তবে এটি শট করার মতো :)
ফিল্টারিংয়ের উদ্দেশ্যে একটি নিয়ামক এএসপি.নেট এমভিসি 4 এ নির্মিত সাধারণ প্রমাণীকরণ ব্যবহার করে তৈরি করা কোনও আইডি রেফারেন্স করার জন্য (আপনি যদি কোড-ফার্স্ট বাইন্ডিংগুলি তৈরি করতে প্রথমে ডাটাবেস এবং সত্তা ফ্রেমওয়ার্ক 5 ব্যবহার করছেন এবং আপনার টেবিলগুলি কাঠামোগত করা হয়েছে তাই সহায়ক যা ইউজার আইডি-তে একটি বিদেশী কী ব্যবহার করা হয়), আপনি ব্যবহার করতে পারেন
WebSecurity.CurrentUserId
একবার আপনি ব্যবহারের বিবৃতি যুক্ত করুন
using System.Web.Security;
System.Security.Principal.WindowsIdentity.GetCurrent().Name
কাজ করে MVC 5
। তবে এটি ব্যবহারকারীর নাম সহ ডোমেন নাম টান দেয়। অর্থাত্ ডোমেন \ ব্যবহারকারীর নাম
এএসপি.নেট এমভিসিতে বর্তমান লগ ইন করতে আমরা নিম্নলিখিত কোডটি ব্যবহার করতে পারি:
var user= System.Web.HttpContext.Current.User.Identity.GetUserName();
এছাড়াও
var userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; //will give 'Domain//UserName'
Environment.UserName - Will Display format : 'Username'
এর সাথে ব্যবহারকারীর নাম:
User.Identity.Name
তবে আপনার যদি কেবল আইডি পেতে হয় তবে আপনি ব্যবহার করতে পারেন:
using Microsoft.AspNet.Identity;
সুতরাং, আপনি সরাসরি ব্যবহারকারী আইডি পেতে পারেন:
User.Identity.GetUserId();
এই পৃষ্ঠায় আপনি যা সন্ধান করছেন তা হতে পারে:
এমভিসি 3 তে পৃষ্ঠা.উজার.আইডেন্টিটি.নাম ব্যবহার করা
আপনি শুধু প্রয়োজন User.Identity.Name
।
ব্যবহার System.Security.Principal.WindowsIdentity.GetCurrent().Name
।
এটি বর্তমান লগ-ইন উইন্ডোজ ব্যবহারকারী পাবেন।
আপনি যদি আপনার লগইন পৃষ্ঠার অভ্যন্তরে থাকেন, উদাহরণস্বরূপ লগইন ইউজার_লগডইন ইভেন্টে, কারেন্ট.ইউজার.আইডেন্টিটি.নাম একটি খালি মান ফেরত দেবে, তাই আপনাকে আপনার লোগিনকন্ট্রোলনাম.উসরের নাম সম্পত্তিটি ব্যবহার করতে হবে।
MembershipUser u = Membership.GetUser(LoginUser.UserName);
আপনি নিম্নলিখিত কোড ব্যবহার করতে পারেন:
Request.LogonUserIdentity.Name;
IPrincipal currentUser = HttpContext.Current.User;
bool writeEnable = currentUser.IsInRole("Administrator") ||
...
currentUser.IsInRole("Operator");
var ticket = FormsAuthentication.Decrypt(
HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Value);
if (ticket.Expired)
{
throw new InvalidOperationException("Ticket expired.");
}
IPrincipal user = (System.Security.Principal.IPrincipal) new RolePrincipal(new FormsIdentity(ticket));
আপনি যদি কোনও ইন্ট্রানেটে অ্যাক্টিভ ডিরেক্টরিতে কাজ করছেন বলে মনে হয় তবে এখানে কয়েকটি টিপস দেওয়া হয়েছে:
(উইন্ডোজ সার্ভার 2012)
ওয়েব সার্ভারে AD এর সাথে কথা বলার জন্য যে কোনও কিছু চালনার জন্য বেশ কয়েকটি পরিবর্তন এবং ধৈর্য দরকার। যেহেতু কোনও ওয়েব সার্ভার বনাম স্থানীয় আইআইএস / আইআইএস এক্সপ্রেসে এটি চালানোর সময় এটি অ্যাপপুলের পরিচয় হিসাবে চালিত হয়, তাই আপনাকে সাইটটি যে কেউ আঘাত করবে তার নকল করতে আপনাকে এটি সেট আপ করতে হবে।
আপনার এএসপি.এনইটি এমভিসি অ্যাপ্লিকেশনটি নেটওয়ার্কের অভ্যন্তরে কোনও ওয়েব সার্ভারে চলমান অবস্থায় কীভাবে সক্রিয় ডিরেক্টরিতে বর্তমান লগ ইন হওয়া ব্যবহারকারীকে পাবেন:
// Find currently logged in user
UserPrincipal adUser = null;
using (HostingEnvironment.Impersonate())
{
var userContext = System.Web.HttpContext.Current.User.Identity;
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, ConfigurationManager.AppSettings["AllowedDomain"], null,
ContextOptions.Negotiate | ContextOptions.SecureSocketLayer);
adUser = UserPrincipal.FindByIdentity(ctx, userContext.Name);
}
//Then work with 'adUser' from here...
নিম্নলিখিত ক্রিয়াকলাপের সাথে সক্রিয় ডিরেক্টরি কনটেক্সট করতে হবে এমন কোনও কল অবশ্যই আপনার আবশ্যক যাতে এটি বিজ্ঞাপনের তথ্য পেতে হোস্টিং পরিবেশ হিসাবে কাজ করে:
using (HostingEnvironment.Impersonate()){ ... }
আপনি অবশ্যই impersonate
আপনার ওয়েবকনফাইগে সত্য হয়ে গেছেন:
<system.web>
<identity impersonate="true" />
আপনার অবশ্যই ওয়েবকনফাইগে উইন্ডোজ প্রমাণীকরণ থাকতে হবে:
<authentication mode="Windows" />
Asp.net এমভিসি আইডেন্টিটি 2 তে আপনি বর্তমান ব্যবহারকারীর নাম পেতে পারেন:
var username = System.Web.HttpContext.Current.User.Identity.Name;
আইআইএস ম্যানেজারে, প্রমাণীকরণের অধীনে, অক্ষম করুন: 1) বেনামে প্রমাণীকরণ 2) ফর্ম প্রমাণীকরণ
তারপরে সার্ভার মোতায়েনের বিপরীতে টেস্টিং পরিচালনা করতে আপনার নিয়ামকের সাথে নিম্নলিখিতগুলি যুক্ত করুন:
string sUserName = null;
string url = Request.Url.ToString();
if (url.Contains("localhost"))
sUserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
else
sUserName = User.Identity.Name;