Security is a necessity in any program, in any system, for every action. Okay, I suppose I went a bit too far now, but I cannot stress enough how important some sort of security is for your applications.
Put on your reading glasses and let’s see how easy it can be to implement Role-based Security in your Visual Basic applications.
Security
Security is quite a broad term that will take me until infinity to explain, so here are a few links to help you understand Application Security:
- https://en.wikipedia.org/wiki/Application_security
- http://searchsoftwarequality.techtarget.com/definition/application-security
Role-based Security
Add the following code behind the btnAdd button’s click event:
Private Sub btnAdd_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnAdd.Click Try Dim ppUser As PrincipalPermission = _ New PrincipalPermission(Nothing, "BUILTIN\Users") ppUser.Demand( Dim intAnswer As Integer = (Integer.Parse(txtInput1.Text) _ + Integer.Parse(txtInput2.Text)) lblAnswer.Text = intAnswer.ToString() Catch ex As System.Security.SecurityException MessageBox.Show("You have been denied access: " _ + ex.Message) End Try End Sub
The PrincipalPermission class is used to create a new permission instance. Here, you first specify the Principal and then demand it. If anyone else except the specified principal tries to access the underlying code, they will be denied access. Here is more information about the PrincipalPermission class: https://msdn.microsoft.com/en-us/library/system.security.permissions.principalpermission%28v=vs.110%29.aspx.
Add the following code behind btnSubtract:
Private Sub btnSubtract_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSubtract.Click Dim intAnswer As Integer = (Integer.Parse(txtInput1.Text) _ - Integer.Parse(txtInput2.Text)) lblAnswer.Text = intAnswer.ToString End Sub
Nothing special here. The preceding code simply subtracts two values.
Add the following code behind the btnDivide button’s click event:
Private Sub btnDivide_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnDivide.Click Dim strUser As String = System.Environment.MachineName _ + "\HTG" Try Dim ppPermission As PrincipalPermission = _ New PrincipalPermission(strUser, Nothing) ppPermission.Demand() Dim DecAnswer As Decimal = (Decimal.Parse(txtInput1.Text) _ / Decimal.Parse(txtInput2.Text)) lblAnswer.Text = Decimal.Round(DecAnswer, 2).ToString() Catch ex As System.Security.SecurityException MessageBox.Show("You have been denied access: " _ + ex.Message) End Try End Sub
The btnDivide button’s code works exactly as the btnAdd button’s code except for the Principal being different.
Lastly, add the next code behind btnMultiply:
Private Sub btnMultiply_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnMultiply.Click lblAnswer.Text = Multiply(Integer.Parse(txtInput1.Text), _ Integer.Parse(txtInput2.Text)).ToString End Sub <PrincipalPermission(SecurityAction.Demand, _ Role:="BUILTIN\Administrators")> _ Private Function Multiply(ByVal int1 As Integer, _ ByVal int2 As Integer) As Integer Return int1 * int2 End Function
This prevents anyone except the Administrators from running this code.